Posso, com um único comando de corte, criar dois arquivos de saída para os dois campos do meu arquivo de entrada?

0

Eu poderia escrever um script de shell para fazer isso em um loop, mas existe uma solução de uma linha usando o terminal?

    
por boredaf 12.12.2016 / 11:28

2 respostas

5

Não com um comando cut . Você poderia fazer isso com awk :

awk -F '\t' '{print $1 > "file1"; print $2 > "file2"}' < file

Ou para todos os campos:

awk -F '\t' '{for (i = 1; i <= NF; i++) print $i > "file" i}' < file

Ou para evitar a leitura do arquivo duas vezes, com pipes e 2 cut invocations, com um shell como AT & T ksh, zsh ou bash com suporte para substituição de processo:

< file tee >(cut -f2 > file2) | cut -f1 > file1

Tenha em atenção que ksh e bash não aguardam por esse comando cut em execução na substituição do processo, pelo que, nesses invólucros, file2 pode não estar completo no momento você executa o próximo comando depois disso.

    
por 12.12.2016 / 12:08
-1

Acho que você pode fazer assim:

cut -f1 input | tee output1 | cut -f1 > output2

Se o seu desejo for arquivado, é a primeira e a segunda colunas.

    
por 12.12.2016 / 11:47

Tags