Como usar a saída de um comando como entrada em outro comando

3

Eu fiz uma cópia de todos os backups feitos no qua de todas as semanas O registro de data e hora de cada arquivo não está classificado, mas o dia é quarta-feira de todo arquivo

Agora, preciso classificar cada arquivo com base no registro de data e hora, por exemplo, se a data for 1 de maio, ele deve primeiro exibir os arquivos de backup de 1 de maio e exibir os arquivos de 8 de maio

Eu usei este comando, mas é claro que está me dando um erro

sort $(cat /home/emerg/Wedbackup.txt)

Erro é

sort: invalid option -- w

Como não sei como usar a saída de um comando como entrada do segundo comando. Preciso de conselhos sobre como fazer isso.

    
por OmiPenguin 13.05.2013 / 10:56

2 respostas

10

Não há necessidade de usar o gato neste caso:

sort /home/emerg/Wedbackup.txt

O problema com o seu exemplo é que seu arquivo está sendo passado como a linha de comando para ordenar, o que não é o que você quer. Por exemplo, se este fosse seu arquivo:

foo bar
baz qux
wibble wobble

Os argumentos seriam assim:

sort foo bar baz qux wibble wobble

Isso não é o que você quer. O que você realmente quer é passar o arquivo para sort no stdin, o que pode ser feito assim:

sort < /home/emerg/Wedbackup.txt

Isso é mais generalizável, já que usar um nome de arquivo como argumento é específico de sort e não é uma convenção universal.

No caso de classificação, você deve preferir passar o nome do arquivo como um argumento em vez de stdin, já que ele permite procurar no arquivo, o que pode melhorar a eficiência da classificação.

    
por 13.05.2013 / 10:59
4

Você deve usar o pipe, assim:

cat /home/emerg/Wedbackup.txt | sort
    
por 13.05.2013 / 10:58

Tags