Как я могу распечатать определенные строки (скажите, что 7-е и 15-е) каждого файла в текущем каталоге, имя которого заканчивается в .txt
?
Существует много путей. Вот некоторые:
awk
awk 'FNR==7 || FNR==15' *.txt
FNR
номер строки текущего файла. Поскольку действие по умолчанию в awk
то, когда выражение оценивает к истинному, должно распечатать текущую строку, это распечатает строки 7 и 15 из каждого .txt
файл.
Awk является единственным инструментом, я знаю, что это может легко (другие могут сделать это, но не совсем так просто) различают номер строки всего входа и номер строки текущего файла. Поэтому другие предложения включают циклы оболочки:
sed
for f in *.txt; do sed -n '7p;15p' "$f"; done
Perl
for f in *.txt; do perl -ne 'print if $.==7 or $.==15' "$f"; done
Или, для предотвращения цикла оболочки:
perl -ne '$c++; print if $c==7 or $c==15; $c=0 if eof' *.txt