Sto cercando di imparare meglio la riga di comando e mi chiedo quale sarebbe la differenza tra questi due comandi.

grep -c ^b example 

e

grep ^b example| cat –n 

Commenti

  • Benvenuto in Unix e Linux . Se vuoi imparare la riga di comando, il modo migliore è sperimentare eseguendo i comandi da solo utilizzando file di input diversi. Le domande dovrebbero mostrare un certo sforzo di ricerca, quindi ' d consiglia di controllare le pagine man pertinenti per scoprire lo scopo delle diverse opzioni. Le pagine man non sono ' sono le più leggibili se ' sei nuovo su Unix, quindi se hai problemi a comprenderlo, potresti modificare questa domanda per renderla più specifico (e utile). Vedi How to Ask e sentiti libero di fare il tour .
  • (-1) Nemmeno gli stessi comandi. Due comandi non correlati.
  • Hai provato a eseguire i comandi?

Rispondi

Bene , secondo del manuale , grep:

cerca PATTERN in ogni FILE . Per impostazione predefinita, grep stampa le righe corrispondenti.

e con -c flag:

-c, --count 

Sopprimi output normale; stampa invece un conteggio delle righe corrispondenti per ogni file di input.

Quindi, grep -c ^b example stampa il numero (conteggio) di righe corrispondenti allo schema, mentre grep ^b example stampa le righe stesse.

Come per cat, viene descritto

concatenare i file e stampare sul output standard

e ciò che fa il flag -n è:

-n, --number 

numerare tutte le righe di output

Dato il pipe e no nomi di file, cat legge dalla pipe, quindi loutput è loutput di grep, con i numeri di riga aggiunti. Quindi grep ^b example| cat –n stampa tutte le righe corrispondenti, numerate.


Questo è diverso da grep -n ^b example, dove grep aggiunge il file li ne numeri delle partite. grep conosce i numeri di riga del file originale, mentre cat vede solo loutput di grep e numera le righe di conseguenza.

Quindi, dato il file di input

$ cat example bar foo basf 

Abbiamo:

$ grep -c ^b example 2 $ grep ^b example |cat -n 1 bar 2 basf $ grep -n ^b example 1:bar 3:basf 

Risposta

Ok comando:

  1. grep -c ^b example: restituisce il conteggio delle righe corrispondenti per le righe che iniziano con la lettera b e

  2. grep ^b example | cat -n: passa il risultato del comando grep al comando cat ed elencali con i numeri di riga. -n forza cat a elencarli insieme ai numeri di riga.

Esempio :

example.txt con contenuto:

media sound3 media sound1 media sound2 find sound -type f -name sound[0-9] -printf "media %f\n" > file.txt find sound -type f -name sound[0-9] -exec bash -c "echo media bash >> file.txt" {} \; find sound -type f -name sound[0-9] -exec bash -c "f="{}"; echo media $( basename ${f}) >> file.txt" \; 

Risultato da (1):

3 

Risultato da (2):

1 media sound3 2 media sound1 3 media sound2 

Commenti

  • Sì hai ragione!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *