Jag försöker lära mig kommandoraden bättre och undrar vad skillnaden mellan dessa två kommandon skulle vara.
grep -c ^b example
och
grep ^b example| cat –n
Kommentarer
- Välkommen till Unix & Linux . Om du vill lära dig kommandoraden är det bästa sättet att experimentera genom att köra kommandona själv med olika inmatningsfiler. Frågorna bör visa lite forskningsinsats så jag ' Jag rekommenderar att du kontrollerar relevanta man-sidor för att ta reda på syftet med de olika alternativen. Man-sidor är inte ' t mest läsbara om du div id = ”50f7e05252″>
är nytt för Unix, så om du har några problem med att förstå det kan du redigera den här frågan för att göra den mer specifika (och användbara). Se Hur man frågar och ta gärna turnén .
Svar
Tja , enligt till manualen , grep
:
söker efter MÖNSTER i varje FIL . Som standard skriver
grep
matchande rader.
och med -c
flagga:
-c, --count
Dämpa normal utgång; skriv istället ut ett antal matchande rader för varje inmatningsfil.
Så grep -c ^b example
skriver ut antal (antal) rader som matchar mönstret, medan grep ^b example
skriver ut raderna själva.
Vad gäller cat
, det beskrivs till
sammanfoga filer och skriva ut på standardutgång
och vad -n
-flaggan gör är att:
-n, --number
antal alla utgångsledningar
Med tanke på röret och inget filnamn, cat
läser från röret, så utgången är utdata från grep
, med radnummer tillagda. Därav grep ^b example| cat –n
skriver ut alla matchande rader, numrerade.
Detta skiljer sig från grep -n ^b example
, där grep
lägger till li ne antal matcher. grep
känner till radnumren för originalfilen, medan cat
bara ser utdata från grep
och numrerar raderna i enlighet därmed.
Så, med tanke på inmatningsfilen
$ cat example bar foo basf
Vi har:
$ grep -c ^b example 2 $ grep ^b example |cat -n 1 bar 2 basf $ grep -n ^b example 1:bar 3:basf
Svar
Ok kommando:
-
grep -c ^b example
: Mata ut antalet för matchande rader för rader som börjar med bokstavenb
och -
grep ^b example | cat -n
: skicka resultatet av grep-kommandot till kattkommandot och lista dem med radnummer.-n
tvingarcat
att lista dem tillsammans med radenummer.
Exempel :
exempel.txt med innehåll:
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" \;
Resultat från (1):
3
Resultat från (2):
1 media sound3 2 media sound1 3 media sound2
Kommentarer
- Ja din rätt!