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:
-
grep -c ^b example
: restituisce il conteggio delle righe corrispondenti per le righe che iniziano con la letterab
e -
grep ^b example | cat -n
: passa il risultato del comando grep al comando cat ed elencali con i numeri di riga.-n
forzacat
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!