показать группу определенных строк из всех файлов с расширением .txt

Как я могу напечатать определенные строки (скажем, с 7-го по 15-й) каждого файла в текущем каталоге, имя которого заканчивается на .txt?

Я знаю о 7 и 15, это сделано как

awk 'FNR==7 || FNR==15' *.txt 

но если я хочу взять от 7 до 15, то как я могу это сделать?

1
задан 18 June 2016 в 05:37

1 ответ

Используя sed распечатать 7-й к 15-м строкам всех .txt файлы в текущем каталоге:

for i in *.txt; do sed -n '7,15 p' "$i"; done

Здесь 7,15 указывает на диапазон строки для печати sed, в этом случае от 7 до 15.


Поскольку Вы использовали awk:

awk 'FNR>=7 && FNR<=15' *.txt

Комбинация head и tail:

for i in *.txt; do tail -n +7 "$i" | head -9; done

Или как @steeldriver упомянутый, с более новым GNU sed (любые поддерживаемые версии Ubuntu имеют его), можно просто сделать:

sed -sn '7,15 p' *.txt

Здесь -s должен рассматривать каждый файл отдельно, а не все они объединились как единый поток.

2
ответ дан 18 June 2016 в 05:37

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

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