mostra linhas específicas de todos os arquivos com extensão .txt

1

Como posso imprimir linhas específicas (digamos, 7 e 15) de cada arquivo no diretório atual cujo nome termina em .txt ?

    
por Doe 17.06.2016 / 15:57

1 resposta

3

Existem muitas formas. Aqui estão alguns:

  • awk

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

    FNR é o número da linha do arquivo atual. Como a ação padrão em awk quando uma expressão é avaliada como true é imprimir a linha atual, isso imprimirá as linhas 7 e 15 de cada arquivo .txt .

O awk é a única ferramenta que eu sei que pode facilmente (outros podem fazer isso, mas não tão simples) distinguir entre o número da linha de toda entrada e o número da linha do arquivo atual. Portanto, as outras sugestões envolvem loops de shell:

  • 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
    

    Ou, para evitar o loop de shell:

    perl -ne '$c++; print if $c==7 or $c==15; $c=0 if eof' *.txt
    
por terdon 17.06.2016 / 16:27