web-dev-qa-db-fra.com

Comment trier à l'aide des commandes grep et sort?

Je voudrais créer une liste triée de tous les services TCP trouvés dans le fichier /etc/services, dirigez la sortie de la commande grep tcp /etc/services dans la commande sort, puis redirigez la sortie de ce canal dans le fichier ~/pipelab.txt.

Je reçois toujours un message d'erreur indiquant que ma sortie est incorrecte et je ne sais pas pourquoi.

Voici ce que j'ai essayé en dernier:

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

> ~/pipelab.txt appartient évidemment à la commande du même côté de l'opérateur de pipeline |. C'est à dire. vous redirigez la sortie grep vers le fichier au lieu de la rediriger vers sort:

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

Vous essayez à la fois de rediriger la sortie de grep vers un fichier et la diriger vers sort. Vous ne pouvez pas faire ça, du moins pas comme ça.

Au lieu de cela, vous voulez vraiment le nourrir pour trier:

grep tcp /etc/services | sort

et ensuite vous voulez rediriger la sortie triée (c'est-à-dire ce qui sort du tri) vers un fichier, donc vous mettez la redirection après le tri:

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

Les canaux et les redirections fonctionnent en changeant où va la sortie de la commande. Vous avez eu deux d'entre eux se disputant la sortie de grep (et finalement, la redirection a gagné et écrit la sortie non triée dans votre fichier).

23
derobert