Múltiplos arquivos de entrada e saída no awk

2

Eu tenho uma pasta cheia de arquivos de texto chamados 000.txt para 181.txt. Como posso processar todos eles (na linha de comando) com o mesmo script awk (program.awk) e enviá-los para seus respectivos arquivos de saída (output000.txt - output181.txt)?

    
por amatek 25.04.2015 / 04:58

1 resposta

1

Suponha que temos uma pasta cheia de arquivos de texto chamados 000.txt para 181.txt. Aqui está um exemplo de processamento de todos eles com o mesmo script awk e enviá-los para os respectivos arquivos de saída (output000.txt - output181.txt):

awk 'NR>6{print>("output" FILENAME)}' {000..181}.txt

Se estivermos usando bash , então {000..181}.txt será expandido para os nomes dos nossos 182 arquivos de entrada.

No awk (isso pode requerer o GNU awk), FILENAME é o nome do arquivo de entrada no qual o awk está atualmente trabalhando. Assim, ("output" FILENAME) é o nome do nosso arquivo de saída atual.

Destinado apenas como exemplo, o acima simplesmente imprime todas as seis primeiras linhas do arquivo de entrada para o arquivo de saída. Programas mais complicados usariam os mesmos princípios.

    
por 25.04.2015 / 06:07

Tags