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

1

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

Eu sei que cerca de 7 e 15 é feito como

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

mas se eu quiser levar de 7 a 15, então como posso fazer isso?

    
por Doe 17.06.2016 / 18:23

1 resposta

2

Usando sed para imprimir de 7 a 15 linhas de todos os arquivos .txt no diretório atual:

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

Aqui 7,15 indica o intervalo de linhas a imprimir por sed , neste caso de 7 a 15.

Como você estava usando awk :

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

Combinação de head e tail :

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

Ou como @ steeldriver mencionado, com o mais novo GNU sed (qualquer versão suportada do Ubuntu), você pode fazer:

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

Aqui -s é para tratar cada arquivo separadamente, em vez de todos eles combinados como um único fluxo.

    
por heemayl 17.06.2016 / 18:36