Como concatenar dois arquivos em um novo e classificar a saída em uma linha

Como concatenar dois arquivos em um novo e classificar a saída em uma linha

Eu tenho dois arquivos com alguns nomes, quando executo cat file1 file2 | sort, o terminal mostra os nomes classificados em ordem alfabética, mas quando executo cat file1 file2 > file3 | sortnão vejo a saída classificada, por quê?

Responder1

Você já redirecionou a saída de file1e file2para o novo arquivo file3.

Com este comando cat file1 file2 > file3 | sort, sortapós pipe.

Isso pode ser verificado conforme abaixo.

cat file1
A
Z
B
cat file2
F
G
C

Agora, quando executo o comando as, cat file1 file2 > file3 | sortpodemos ver que o conteúdo de file1e file2está gravado, file3mas não está classificado.

Acredito que o que você está tentando alcançar poderia ser facilmente alcançado, pois,

cat file1 file2 | sort > file3

No entanto, não mostra a saída na janela do console.

Se você precisar que a saída de dois arquivos após a classificação seja gravada em um novo arquivo e, ao mesmo tempo, a saída classificada esteja disponível no console, você pode fazer algo como abaixo.

cat file1 file2 | sort > file3; cat file3

Porém, é bom fazer uso teeneste caso. teepoderia ser efetivamente usado como,

cat file1 file2 | sort | tee file3

O comando acima basicamente concatena 2 arquivos e os classifica e exibe a saída no console e ao mesmo tempo grava a saída do pipe no novo arquivo especificado usando o teecomando.

Como usuárioCaseyaponta, se você tiver zshshell disponível em seu sistema, você também pode usar o comando abaixo.

sort <file1 <file2 | tee file3

Responder2

POSIX define o sortpropósito do utilitário assim:

Classifique as linhas de todos os arquivos nomeados juntos e grave o resultado na saída especificada.

Você pode classificar dois arquivos em um arquivo de saída concatenado como:

sort $opts file1 file2 >output_file

Se você quiser ver a saída no seu shellstdout esalve os resultados em um arquivo de saída e use tee:

sort $opts file[12] | tee output_file

informação relacionada