Как прочитать файл, начиная с определенного количества строк в & ldquo; в то время как читается &?

Все, что я хочу, это указать определенное количество строк, например, это lineNumberIs=3 и сказать во время чтения, что нужно начинать с этой третьей строки или какого-либо другого номера строки и извлекать строки после опций, чтобы выполнить некоторые команды позже при получении линии Что-то подобное

 while read line from $lineNumberIs
    do
    **some commands not just echo nor printing on the screen** 
    done < $dataFile
3
задан 1 November 2017 в 04:03

3 ответа

Очень простое решение -

tail -n +K filename

где K = номер строки, с которой вы хотите прочитать файл. Это начнет чтение файла с K-й строки до конца.

0
ответ дан 1 November 2017 в 04:03
while IFS= read -r line; do
    # ...
done < <(tail -n "+$lineNumberIs" $dataFile)

tail -n +K (со знаком плюс) указывает хвосту начинать с указанного номера строки (см. справочную страницу ).

Бит <(...) является заменой процесса . Это позволяет вам указать последовательность команд и позволить bash читать ее как файл. Это очень удобно, когда вы хотите избежать эффекта подоболочки, созданной в конвейере.

IFS= read -r используется для чтения строки точно в том виде, в каком она появляется в файле, без удаленных пробелов или escape-последовательностей.

0
ответ дан 1 November 2017 в 04:03
#!/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

Этот сценарий ожидает, что количество строк пропустит в качестве параметра. Можно сделать то, что Вам нравится во внутреннем если условие.

3
ответ дан 1 November 2017 в 04:03

Другие вопросы по тегам:

Похожие вопросы: