Încerc să învăț mai bine linia de comandă și mă întreb care ar fi diferența dintre aceste două comenzi.
grep -c ^b example
și
grep ^b example| cat –n
Comentarii
- Bine ați venit la Unix și Linux . Dacă doriți să aflați linia de comandă, cel mai bun mod este să experimentați executând singur comenzile folosind diferite fișiere de intrare. Întrebările ar trebui să arate un efort de cercetare, așa că eu ' vă sfătuim să verificați paginile manuale relevante pentru a afla scopul diferitelor opțiuni. Paginile Man nu sunt ' cele mai lizibile dacă ' sunteți nou în Unix, deci dacă aveți probleme de înțelegere, puteți edita această întrebare pentru ao face mai specific (și util). Consultați Cum să întrebați și nu ezitați să participați la turul .
- (-1) Nici măcar aceleași comenzi. Două comenzi fără legătură.
- Ați încercat să rulați comenzile?
Răspundeți
Ei bine , conform manualului , grep
:
caută MODEL în fiecare FILE . În mod implicit,
grep
tipărește liniile potrivite.
și cu -c
flag:
-c, --count
Suprimă ieșirea normală; imprimați în schimb un număr de linii potrivite pentru fiecare fișier de intrare.
Deci, grep -c ^b example
tipărește număr (număr) de linii care se potrivesc cu modelul, în timp ce grep ^b example
tipărește singuri liniile.
În ceea ce privește cat
, este descris pentru
concatenarea fișierelor și tipărirea pe ieșire standard
și ceea ce face marcajul -n
este:
-n, --number
numerează toate liniile de ieșire
Având în vedere conducta și nu numele fișierelor, cat
citește din conductă, astfel încât ieșirea este ieșirea grep
, cu numerele de linie adăugate. Prin urmare, grep ^b example| cat –n
imprimă toate liniile potrivite, numerotate.
Acest lucru este diferit de grep -n ^b example
, unde grep
adaugă li numere ne ale meciurilor. grep
cunoaște numerele de linie ale fișierului original, în timp ce cat
vede doar ieșirea grep
și numerotează liniile în consecință.
Deci, având în vedere fișierul de intrare
$ cat example bar foo basf
Avem:
$ grep -c ^b example 2 $ grep ^b example |cat -n 1 bar 2 basf $ grep -n ^b example 1:bar 3:basf
Răspuns
Comandă Ok:
-
grep -c ^b example
: Se afișează numărul pentru potrivirea liniilor pentru liniile care încep cu literab
și -
grep ^b example | cat -n
: treceți rezultatul comenzii grep la comanda cat și listați-le cu numerele de linie.-n
forțeazăcat
să le listeze împreună cu numerele de linii.
Exemplu :
example.txt cu conținut:
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" \;
Rezultat din (1):
3
Rezultat din (2):
1 media sound3 2 media sound1 3 media sound2
Comentarii
- Da dreptul tău!