Come faccio a ordinare usando i comandi grep e sort?


14

Vorrei creare un elenco ordinato di tutti i servizi TCP trovati nel file /etc/services, reindirizzare l'output del comando grep tcp /etc/servicesnel comando sort, quindi reindirizzare l'output di questa pipe nel file ~/pipelab.txt.

Continuo a ricevere un messaggio di errore che indica che l'output è errato e non so perché.

Questo è quello che ho provato per ultimo:

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

Risposte:


11

> ~/pipelab.txtappartiene ovviamente al comando sullo stesso lato dell'operatore della pipeline |. Vale a dire reindirizzare l' grepoutput sul file anziché reindirizzarlo in sort:

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

21

Stai tentando di reindirizzare l'output di grepun file e di reindirizzarlo sort. Non puoi farlo, almeno non così.

Invece, vuoi davvero solo dargli da mangiare per ordinare:

grep tcp /etc/services | sort

e quindi si desidera reindirizzare l' output ordinato (ovvero, ciò che sta uscendo dall'ordinamento) su un file, quindi si inserisce il reindirizzamento dopo l'ordinamento:

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

Sia i pipe che i reindirizzamenti funzionano modificando la destinazione dell'output del comando. Hai avuto due di loro in lotta per l'output di grep(e alla fine, il reindirizzamento ha vinto e hai scritto l'output non ordinato nel tuo file).


Grazie mille, ho pensato che finché avessi inserito il comando sort in qualunque posto avrebbe funzionato.
user72510

1
@ user72510 Le condutture vengono elaborate in ordine, da sinistra a destra. Questo è effettivamente utile, ad esempio se vuoi le prime cinque righe dell'output ordinato, puoi farlo grep tcp /etc/services | sort | head -n 5. È importante che sortsia fatto prima del head, o non otterresti le linee che desideri.
derobert,

Grazie per averlo spiegato. Prendo la lezione online, quindi sto insegnando a me stesso. Aggiungendo che ho 40 anni è un apprendimento lento.
user72510
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.