Jeg prøver at lære kommandolinjen bedre og spekulerer på, hvad forskellen mellem disse to kommandoer ville være.

grep -c ^b example 

og

grep ^b example| cat –n 

Kommentarer

  • Velkommen til Unix & Linux . Hvis du vil lære kommandolinjen, er den bedste måde at eksperimentere ved at køre kommandoerne selv ved hjælp af forskellige inputfiler. Spørgsmål skal vise noget forskningsindsats, så jeg ' råd til at kontrollere de relevante mandsider for at finde ud af formålet med de forskellige muligheder. Man-sider er ikke ' t mest læsbare, hvis du ' er nyt i Unix, så hvis du har problemer med at forstå det, kan du redigere dette spørgsmål for at gøre det mere specifikt (og nyttigt). Se Sådan spørger du og er velkommen til at tage -turen .
  • (-1) Ikke engang de samme kommandoer. To ikke-relaterede kommandoer.
  • Forsøgte du at køre kommandoerne?

Svar

Nå ifølge til manualen , grep:

søger efter MØNSTER i hver FIL . Som standard udskriver grep de matchende linjer.

og med -c flag:

-c, --count 

Undertryk normal output; i stedet udskrive et antal matchende linjer for hver inputfil.

grep -c ^b example udskriver antal (antal) linjer, der matcher mønsteret, mens grep ^b example udskriver linjerne selv.

Hvad angår cat, det er beskrevet til

sammenkædning af filer og udskrivning på standard output

og hvad -n flag gør er at:

-n, --number 

nummer alle outputlinjer

Givet røret og ikke filnavne, cat læser fra røret, så output er output fra grep, med linjenumre tilføjet. Derfor grep ^b example| cat –n udskriver alle matchende linjer, nummererede.


Dette er forskelligt fra grep -n ^b example, hvor grep tilføjer li ne numrene på kampene. grep kender linjenumrene i den originale fil, mens cat kun ser output fra grep og nummererer linjerne i overensstemmelse hermed.

Så givet inputfilen

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

  1. grep -c ^b example: Udfør antallet af matchende linjer for linjer, der begynder med bogstavet b, og

  2. grep ^b example | cat -n: overfør resultatet af grep-kommandoen til cat-kommandoen og anfør dem med linjenumre. -n tvinger cat til at liste dem sammen med linjenumre.

Eksempel :

eksempel.txt med indhold:

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 fra (1):

3 

Resultat fra (2):

1 media sound3 2 media sound1 3 media sound2 

Kommentarer

  • Ja din ret!

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *