Grep

Från Wiki.linux.se
(Omdirigerad från grep)
Hoppa till navigering Hoppa till sök

grep - Sök efter mönster i filer

Kommandot `grep` används för att söka efter specifika mönster i filer i ett Unix-liknande operativsystem.

Syntax

grep [ALTERNATIV]... MÖNSTER [FIL]...

Beskrivning

Kommandot `grep` söker efter rader som matchar ett angivet mönster i en eller flera filer. Det skriver ut de rader som matchar mönstret till standardutgången.

Alternativ

Kommandot `grep` stöder många alternativ som kan användas för att justera hur sökningen utförs och hur resultaten visas:

  • -A NUM, --after-context=NUM - Skriv ut NUM rader av kontext efter varje träff.
  • -a, --text - Behandla binära filer som textfiler.
  • -B NUM, --before-context=NUM - Skriv ut NUM rader av kontext före varje träff.
  • -C NUM, --context=NUM - Skriv ut NUM rader av kontext före och efter varje träff.
  • -c, --count - Skriv ut antalet matchande rader per fil.
  • -D ACTION, --devices=ACTION - Hur man behandlar enheter; ACTION kan vara `read` eller `skip`.
  • -d ACTION, --directories=ACTION - Hur man behandlar kataloger; ACTION kan vara `read`, `recurse` eller `skip`.
  • -E, --extended-regexp - Tolka mönstret som ett utökat reguljärt uttryck.
  • -e MÖNSTER, --regexp=MÖNSTER - Ange mönstret att söka efter.
  • -F, --fixed-strings - Tolka mönstret som en lista med fasta strängar, separerade med ny rad.
  • -f FIL, --file=FIL - Hämta mönster från filen FIL.
  • -G, --basic-regexp - Tolka mönstret som ett grundläggande reguljärt uttryck (standard).
  • -H, --with-filename - Skriv ut filnamnet före varje rad med en träff.
  • -h, --no-filename - Skriv inte ut filnamnet före varje rad med en träff.
  • --help - Visa hjälp och avsluta.
  • -I - Ignorera binära filer.
  • -i, --ignore-case - Ignorera skiftlägeskänslighet vid sökning.
  • -L, --files-without-match - Skriv ut namnet på varje fil som inte innehåller några träffar.
  • -l, --files-with-matches - Skriv ut namnet på varje fil som innehåller minst en träff.
  • -m NUM, --max-count=NUM - Stoppa efter NUM träffar.
  • -n, --line-number - Skriv ut radnumret före varje rad med en träff.
  • -o, --only-matching - Skriv endast ut de delar av raderna som matchar mönstret.
  • -q, --quiet, --silent - Skriv inte ut någonting, returnera endast exit-status.
  • -R, -r, --recursive - Sök rekursivt i kataloger.
  • -s, --no-messages - Undertryck felmeddelanden om icke-existerande eller oläsliga filer.
  • -v, --invert-match - Skriv ut de rader som inte matchar mönstret.
  • -w, --word-regexp - Matcha endast hela ord.
  • -x, --line-regexp - Matcha endast hela rader.
  • -Z, --null - Sätt null-byte som avgränsare efter filnamn.

Exempel

Här är några praktiska exempel som visar hur du kan använda `grep`-kommandot:

  • För att söka efter ett mönster i en fil:

grep "mönster" fil.txt

  • För att söka efter ett mönster i flera filer:

grep "mönster" fil1.txt fil2.txt

  • För att ignorera skiftlägeskänslighet vid sökning:

grep -i "mönster" fil.txt

  • För att visa radnummer för varje träff:

grep -n "mönster" fil.txt

  • För att söka rekursivt i kataloger:

grep -r "mönster" katalog/

  • För att visa antalet matchande rader:

grep -c "mönster" fil.txt

  • För att skriva ut filnamn för varje träff:

grep -H "mönster" fil.txt

  • För att skriva ut kontext före och efter varje träff:

grep -C 2 "mönster" fil.txt

  • För att endast visa de delar av raderna som matchar mönstret:

grep -o "mönster" fil.txt

Skillnader mellan macOS och Linux

Det finns några viktiga skillnader att tänka på när man använder `grep`-kommandot på macOS jämfört med Linux:

  • Standardinstallationer: På de flesta Linux-distributioner är `grep` en del av GNU coreutils, medan macOS använder BSD-versionen av `grep`. Detta innebär att vissa alternativ och beteenden kan skilja sig åt.
  • Alternativ och funktioner: GNU `grep` (Linux) har fler alternativ och funktioner jämfört med BSD `grep` (macOS). Till exempel kan vissa avancerade alternativ vara specifika för GNU `grep`.

Här är några exempel som visar skillnaderna:

  • På Linux kan du använda `grep --color` för att markera matchande text med färg:

grep --color "mönster" fil.txt

Detta alternativ kanske inte är tillgängligt på macOS.
  • På Linux kan du använda `grep -P` för att använda Perl-kompatibla reguljära uttryck:

grep -P "mönster" fil.txt

Detta alternativ kanske inte är tillgängligt på macOS.

Det är alltid bra att konsultera `man`-sidan för `grep` på din specifika plattform för att se vilka alternativ och funktioner som är tillgängliga.

Felsökning

Om du får ett felmeddelande när du använder `grep`, kontrollera följande:

  • Att filen du försöker läsa faktiskt existerar.
  • Att du har rättigheter att läsa filen.
  • Att syntaxen för ditt kommando är korrekt. Kontrollera att du använder rätt alternativ och parametrar.

Se även

  • egrep - Utökat grep med stöd för reguljära uttryck.
  • fgrep - Fasta grep för att söka efter fasta strängar.
  • awk - Ett språk för mönstermatchning och textbehandling.
  • sed - Stream editor för att filtrera och transformera text.

Källor

Sidslut

Det här är en maskinöversättning av linux kommando manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp i Stockholm som har sponsrat Linux.se med webserver.