#!/bin/sh
while getopts "f:t:" option; do
case "$option" in
f) from=$OPTARG ;;
t) to=$OPTARG ;;
esac
done
if [ -z "$from" ] || [ -z "$to" ]; then
echo "must give both -f and -t" >&2
exit 1
fi
awk -v "from=$from" -v "to=$to" 'from <= NR && NR <= to' filename
# or:
sed -n "$from,$to p; $to q" filename
# or:
i=0
while read line; do
i=$(( i + 1 ))
if [ $i -ge $from ] && [ $i -le $to ]; then
printf "%s\n" "$line"
fi
[ $i -eq $to ] && break
done < filename
Можно использовать >>
для добавления и 2> /dev/null
для перенаправления stderr:
mycommand >> outputfile 2> /dev/null
Хотя я подозреваю, что что-то очень похожее уже спросили...