Как я могу напечатать определенные строки (скажем, с 7-го по 15-й) каждого файла в текущем каталоге, имя которого заканчивается на .txt
?
Я знаю о 7 и 15, это сделано как
awk 'FNR==7 || FNR==15' *.txt
но если я хочу взять от 7 до 15, то как я могу это сделать?
Используя 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
должен рассматривать каждый файл отдельно, а не все они объединились как единый поток.