Grep
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.