Î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:

  1. grep -c ^b example: Se afișează numărul pentru potrivirea liniilor pentru liniile care încep cu litera b și

  2. 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!

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *