
Все, что мне нужно, это указать определенное количество строк, например, вот так, lineNumberIs=3
и указать во время чтения начинать с этой третьей строки или с какого-либо другого номера строки, а затем извлекать строки, чтобы выполнить некоторые команды позже на извлеченных строках.
Что-то вроде того
while read line from $lineNumberIs
do
**some commands not just echo nor printing on the screen**
done < $dataFile
решение1
while IFS= read -r line; do
# ...
done < <(tail -n "+$lineNumberIs" $dataFile)
tail -n +K
(со знаком плюс) указывает tail начать с указанного номера строки (см.страница руководства).
Бит <(...)
- этозамена процесса. Он позволяет вам указать последовательность команд и позволить bash читать из нее как из файла. Это очень удобно, когда вы хотите избежать эффекта подоболочки, созданной в конвейере.
IFS= read -r
используется для чтения строки именно так, как она указана в файле, без удаления пробелов и управляющих последовательностей.
решение2
#!/bin/bash
if [ $# -eq 0 ]; then
echo "Please execute $0 with linestoskip parameter"
exit 0
fi
linestoskip=$1
Counter=0
dataFile='/etc/fstab'
while read line
do
if [ $Counter -ge $linestoskip ]; then
echo $line
fi
Counter=`expr $Counter + 1`
done < $dataFile
Этот скрипт ожидает число строк, которые нужно пропустить, как параметр. Вы можете сделать все, что захотите, во внутреннем условии if.
решение3
Очень простое решение -
tail -n +K filename
где K = номер строки, с которой вы хотите прочитать файл. Это начнёт чтение файла с K-й строки до конца.