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

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

1
задан 17 June 2016 в 17:17

1 ответ

Существует много путей. Вот некоторые:

  • 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
    
3
ответ дан 7 December 2019 в 12:39

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

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