Como faço para classificar usando os comandos grep e sort?

14

Gostaria de criar uma lista classificada de todos os serviços TCP encontrados no arquivo /etc/services, canalizar a saída do comando grep tcp /etc/servicesno comando sorte redirecionar a saída desse canal para o arquivo ~/pipelab.txt.

Recebo uma mensagem de erro informando que minha saída está errada e não sei por que.

Isto é o que eu tentei por último:

grep tcp /etc/services > ~/pipelab.txt | sort
user72510
fonte

Respostas:

11

> ~/pipelab.txtobviamente pertence ao comando no mesmo lado do operador de pipeline |. Ou seja, você redireciona a grepsaída para o arquivo em vez de canalizá-la para sort:

grep tcp /etc/services | sort > ~/pipelab.txt
Hauke ​​Laging
fonte
21

Você está tentando redirecionar a saída de greppara um arquivo e canalizá-lo para sort. Você não pode fazer isso, pelo menos não assim.

Em vez disso, você realmente deseja alimentá-lo para classificar:

grep tcp /etc/services | sort

e então você deseja redirecionar a saída classificada (ou seja, o que está saindo da classificação) para um arquivo, para colocar o redirecionamento após a classificação:

grep tcp /etc/services | sort > ~/pipelab.txt

Os canais e os redirecionamentos funcionam mudando para onde vai a saída do comando. Você tinha dois deles brigando pela saída de grep(e, finalmente, o redirecionamento venceu e gravou a saída não classificada em seu arquivo).

derobert
fonte
Muito obrigado, pensei desde que eu colocasse o comando de classificação em qualquer lugar que ainda funcionasse.
user72510
1
@ user72510 Os pipelines são processados ​​em ordem, da esquerda para a direita. Isso é realmente útil, por exemplo, se você quiser as cinco primeiras linhas da saída classificada, poderá fazê-lo grep tcp /etc/services | sort | head -n 5. É importante que sortseja feito antes do head, ou você não obteria as linhas que deseja.
derobert
Obrigado por explicar isso. Estou fazendo a aula on-line, então estou me ensinando. Acrescentando que tenho 40 anos, é um aprendizado lento.
user72510