|
|
Rad 1: |
Rad 1: |
| [[Exempel på hur man använder 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. |
|
| |
|
| == NAME topp == | | === Syntax === |
| grep - skriv ut linjer som matchar mönster
| | grep [ALTERNATIV]... MÖNSTER [FIL]... |
|
| |
|
| == SYNOPSIS topp == | | === Beskrivning === |
| '''grep''' [ ''ALTERNATIV'' ...] ''MÖNSTER'' [ ''FIL'' ...]
| | 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. |
| '''grep''' [ ''ALTERNATIV'' ...] '''-e''' ''MÖNSTER'' ... [ ''FIL'' ...]
| |
| '''grep''' [ ''ALTERNATIV'' ...] '''-f''' ''PATTERN_FILE'' ... [ ''FIL'' .. .]
| |
|
| |
|
| == BESKRIVNING == | | === Alternativ === |
| '''grep''' söker efter ''MÖNSTER'' i varje ''FIL'' . ''PATTERNS'' är ett eller flera
| | Kommandot `grep` stöder många alternativ som kan användas för att justera hur sökningen utförs och hur resultaten visas: |
| mönster separerade av nyradstecken och '''grep''' skriver ut var och en
| |
| linje som matchar ett mönster. Vanligtvis bör ''MÖNSTER citeras''
| |
| när '''grep''' används i ett skalkommando.
| |
|
| |
| En ''FIL'' med " '''-''' " står för standardinmatning. Om ingen ''FIL'' anges,
| |
| rekursiva sökningar undersöker arbetskatalogen och
| |
| icke-rekursiva sökningar läser standardinmatning.
| |
|
| |
|
| == ALTERNATIV ==
| | * -A NUM, --after-context=NUM - Skriv ut NUM rader av kontext efter varje träff. |
| '''Generisk programinformation'''
| | * -a, --text - Behandla binära filer som textfiler. |
| '''--hjälp''' Skriv ut ett användningsmeddelande och avsluta.
| | * -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. |
| '''-V''' , '''--version'''
| | * -c, --count - Skriv ut antalet matchande rader per fil. |
| Mata ut versionsnumret för '''grep''' och avsluta.
| | * -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`. |
| '''Mönstersyntax'''
| | * -E, --extended-regexp - Tolka mönstret som ett utökat reguljärt uttryck. |
| '''-E''' , '''--extended-regexp'''
| | * -e MÖNSTER, --regexp=MÖNSTER - Ange mönstret att söka efter. |
| Tolka ''PATTERNS'' som utökade reguljära uttryck (EREs,
| | * -F, --fixed-strings - Tolka mönstret som en lista med fasta strängar, separerade med ny rad. |
| se nedan).
| | * -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). |
| '''-F''' , '''--fixed-strings'''
| | * -H, --with-filename - Skriv ut filnamnet före varje rad med en träff. |
| Tolka ''MÖNSTER'' som fasta strängar, inte regelbundna
| | * -h, --no-filename - Skriv inte ut filnamnet före varje rad med en träff. |
| uttryck.
| | * --help - Visa hjälp och avsluta. |
|
| | * -I - Ignorera binära filer. |
| '''-G''' , '''--basic-regexp'''
| | * -i, --ignore-case - Ignorera skiftlägeskänslighet vid sökning. |
| Tolka ''MÖNSTER'' som grundläggande reguljära uttryck (BRE, se
| | * -L, --files-without-match - Skriv ut namnet på varje fil som inte innehåller några träffar. |
| Nedan). Detta är standard.
| | * -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. |
| '''-P''' , '''--perl-regexp'''
| | * -n, --line-number - Skriv ut radnumret före varje rad med en träff. |
| Tolka ''PATTERNS'' som Perl-kompatibla reguljära uttryck
| | * -o, --only-matching - Skriv endast ut de delar av raderna som matchar mönstret. |
| (PCRE). Det här alternativet är experimentellt när det kombineras med
| | * -q, --quiet, --silent - Skriv inte ut någonting, returnera endast exit-status. |
| alternativet '''-z''' ( '''--null-data''' ) och '''grep -P''' kan varna för
| | * -R, -r, --recursive - Sök rekursivt i kataloger. |
| oimplementerade funktioner.
| | * -s, --no-messages - Undertryck felmeddelanden om icke-existerande eller oläsliga filer. |
|
| | * -v, --invert-match - Skriv ut de rader som inte matchar mönstret. |
| '''Matchande kontroll'''
| | * -w, --word-regexp - Matcha endast hela ord. |
| '''-e''' ''PATTERNS'' , '''--regexp=''' ''PATTERNS''
| | * -x, --line-regexp - Matcha endast hela rader. |
| Använd ''PATTERNS'' som mönstret. Om detta alternativ används
| | * -Z, --null - Sätt null-byte som avgränsare efter filnamn. |
| flera gånger eller kombineras med alternativet '''-f''' ( '''--file''' ),
| |
| sök efter alla angivna mönster. Detta alternativ kan användas för att
| |
| skydda ett mönster som börjar med "-".
| |
|
| |
| '''-f''' ''FIL'' , '''--fil=''' ''FIL''
| |
| Få mönster från ''FIL'' , ett per rad. Om detta alternativ
| |
| används flera gånger eller kombineras med alternativet '''-e'''
| |
| ( '''--regexp''' ), sök efter alla angivna mönster. De
| |
| tom fil innehåller noll mönster och matchar därför
| |
| ingenting. Om ''FILE'' är '''-''' , läs mönster från standard
| |
| inmatning.
| |
|
| |
| '''-i''' , '''--ignore-case'''
| |
| Ignorera skiftlägesskillnader i mönster och indata, så
| |
| att karaktärer som skiljer sig bara i fall matchar varandra.
| |
|
| |
| '''--no-ignore-case'''
| |
| Ignorera inte skiftlägesskillnader i mönster och input
| |
| data. Detta är standard. Det här alternativet är användbart för
| |
| skickar till skalskript som redan använder '''-i''' , för att avbryta
| |
| dess effekter eftersom de två alternativen åsidosätter varandra.
| |
|
| |
| '''-v''' , '''--invert-match'''
| |
| Invertera känslan av matchning för att välja icke-matchning
| |
| rader.
| |
|
| |
| '''-w''' , '''--ord-regexp'''
| |
| Välj bara de rader som innehåller matchningar som bildar hela
| |
| ord. Testet är att den matchande delsträngen måste
| |
| antingen vara i början av raden eller föregås av en
| |
| icke-ords ingående karaktär. På samma sätt måste det vara
| |
| antingen i slutet av raden eller följt av ett icke-ord
| |
| ingående karaktär. Tecken som består av ord är
| |
| bokstäver, siffror och understreck. Detta alternativ har nr
| |
| effekt om '''-x''' också anges.
| |
|
| |
| '''-x''' , '''--line-regexp'''
| |
| Välj bara de matchningar som exakt matchar helheten
| |
| linje. För ett reguljärt uttrycksmönster är detta som
| |
| placera mönstret inom parentes och sedan omge det med '''^'''
| |
| och '''$''' .
| |
|
| |
| '''General Output Control'''
| |
| '''-c''' , '''--count'''
| |
| Dämpa normal utgång; skriv istället ut ett antal matchningar
| |
| rader för varje indatafil. Med '''-v''' , '''--invert-match'''
| |
| alternativ (se ovan), räkna rader som inte matchar.
| |
|
| |
| '''--färg''' [ '''=''' ''NÄR'' ], '''--färg''' [ '''=''' ''NÄR'' ]
| |
| Omge de matchade (icke-tomma) strängarna, matchande linjer,
| |
| kontextrader, filnamn, radnummer, byteförskjutningar och
| |
| separatorer (för fält och grupper av sammanhangslinjer) med
| |
| escape-sekvenser för att visa dem i färg på terminalen.
| |
| Färgerna definieras av miljövariabeln
| |
| '''GREP_COLORS''' . ''NÄR'' är '''aldrig''' , '''alltid''' eller '''automatiskt''' .
| |
|
| |
| '''-L''' , '''--filer-utan-matchning'''
| |
| Dämpa normal utgång; skriv istället ut namnet på varje
| |
| indatafil från vilken ingen utdata normalt skulle ha varit
| |
| tryckt.
| |
|
| |
| '''-l''' , '''--filer-med-matchningar'''
| |
| Dämpa normal utgång; skriv istället ut namnet på varje
| |
| indatafil från vilken utdata normalt skulle ha varit
| |
| tryckt. Skanningen av varje indatafil upphör vid första matchningen.
| |
|
| |
| '''-m''' ''NUM'' , '''--max-count=''' ''NUM''
| |
| Sluta läsa en fil efter ''NUM'' matchande rader. Om ''NUM'' är
| |
| noll, '''grep''' slutar direkt utan att läsa indata. Ett ''NUM''
| |
| på -1 behandlas som oändligt och '''grep''' slutar inte; detta
| |
| är standard. Om ingången är standardinmatning från en
| |
| vanlig fil, och ''NUM'' matchande rader matas ut, '''grep'''
| |
| säkerställer att standardingången är positionerad till just
| |
| efter den sista matchande raden innan du lämnar, oavsett
| |
| förekomsten av efterföljande kontextlinjer. Detta möjliggör en
| |
| anropsprocess för att återuppta en sökning. När '''grep''' slutar efter
| |
| ''NUM'' matchande rader, matar den ut alla efterföljande kontextrader.
| |
| När alternativet '''-c''' eller '''--count''' också används, gör det inte '''grep'''
| |
| mata ut ett antal större än ''NUM'' . När alternativet '''-v''' eller
| |
| '''--invert-match''' också används, slutar '''grep''' efter
| |
| matar ut ''NUM'' icke-matchande rader.
| |
|
| |
| '''-o''' , '''--bara-matchande'''
| |
| Skriv endast ut de matchade (icke-tomma) delarna av en matchning
| |
| linje, med varje sådan del på en separat utgångslinje.
| |
|
| |
| '''-q''' , '''--tyst''' , '''--tyst'''
| |
| Tyst; skriv inget till standardutdata. Utgång
| |
| omedelbart med nollstatus om någon matchning hittas, till och med
| |
| om ett fel upptäckts. Se även alternativet '''-s''' eller
| |
| '''--no-messages .'''
| |
|
| |
| '''-s''' , '''--inga-meddelanden'''
| |
| Undertryck felmeddelanden om obefintlig eller oläsbar
| |
| filer.
| |
|
| |
| '''Output Line Prefix Control'''
| |
| '''-b''' , '''--byte-offset'''
| |
| Skriv ut den 0-baserade byteoffseten i indatafilen innan
| |
| varje utgångsrad. Om '''-o''' ( '''--only-matching''' ) är
| |
| specificerat, skriv ut offseten för själva matchande delen.
| |
|
| |
| '''-H''' , '''--med-filnamn'''
| |
| Skriv ut filnamnet för varje matchning. Detta är standard
| |
| när det finns mer än en fil att söka efter. Detta är en GNU
| |
| förlängning.
| |
|
| |
| '''-h''' , '''--no-filnamn'''
| |
| Undertryck prefixet av filnamn vid utdata. Detta är
| |
| standard när det bara finns en fil (eller bara standard
| |
| input) för att söka.
| |
|
| |
| '''--label=''' ''LABEL''
| |
| Displayingång kommer faktiskt från standardingång som ingång
| |
| kommer från filen ''LABEL'' . Detta kan vara användbart för kommandon
| |
| som omvandlar en fils innehåll före sökning, t.ex.
| |
| '''gzip -cd foo.gz | grep --label=foo -H 'något mönster'''' . Ser
| |
| även alternativet '''-H''' .
| |
|
| |
| '''-n''' , '''--radnummer'''
| |
| Prefix varje utdatarad med det 1-baserade radnumret
| |
| i sin indatafil.
| |
|
| |
| '''-T''' , '''--initial-tab'''
| |
| Se till att det första tecknet i det faktiska radens innehåll
| |
| ligger på ett tabbstopp, så att inriktningen av tabbarna ser ut
| |
| vanligt. Detta är användbart med alternativ som prefix deras
| |
| utdata till det faktiska innehållet: '''-H''' , '''-n''' , och '''-b''' . För att
| |
| förbättra sannolikheten för att rader från en enda fil kommer att göra det
| |
| alla börjar i samma kolumn, detta orsakar också linjen
| |
| nummer och byte offset (om sådan finns) som ska skrivas ut i en
| |
| minsta storlek fältbredd.
| |
|
| |
| '''-Z''' , '''--null'''
| |
| Mata ut en nollbyte (ASCII '''NUL''' -tecknet) istället för
| |
| tecknet som normalt följer ett filnamn. För
| |
| Exempelvis matar '''grep -lZ''' en noll byte efter varje filnamn
| |
| istället för den vanliga nyraden. Detta alternativ gör att
| |
| utdata entydig, även i närvaro av filnamn
| |
| innehåller ovanliga karaktärer som nyrader. Detta alternativ
| |
| kan användas med kommandon som '''find -print0''' , '''perl -0''' , '''sort'''
| |
| '''-z''' och '''xargs -0''' för att bearbeta godtyckliga filnamn, till och med
| |
| de som innehåller nyradstecken.
| |
|
| |
| '''Kontextlinjekontroll'''
| |
| '''-A''' ''NUM'' , '''--after-context=''' ''NUM''
| |
| Skriv ut ''NUM'' rader av efterföljande kontext efter matchande rader.
| |
| Placerar en rad som innehåller en gruppavgränsare ( '''--''' ) mellan
| |
| sammanhängande grupper av matcher. Med alternativet '''-o''' eller
| |
| '''--only-matching''' har detta ingen effekt och en varning
| |
| är given.
| |
|
| |
| '''-B''' ''NUM'' , '''--before-context=''' ''NUM''
| |
| Skriv ut ''NUM'' rader av inledande sammanhang innan matchande rader.
| |
| Placerar en rad som innehåller en gruppavgränsare ( '''--''' ) mellan
| |
| sammanhängande grupper av matcher. Med alternativet '''-o''' eller
| |
| '''--only-matching''' har detta ingen effekt och en varning
| |
| är given.
| |
|
| |
| '''-C''' ''NUM'' , '''-''' ''NUM'' , '''--context=''' ''NUM''
| |
| Skriv ut ''NUM'' rader av utdatakontext. Placerar en linje
| |
| som innehåller en gruppseparator ( '''--''' ) mellan angränsande
| |
| grupper av matcher. Med alternativet '''-o''' eller '''--only-matching ,'''
| |
| detta har ingen effekt och en varning ges.
| |
|
| |
| '''--group-separator=''' ''SEP''
| |
| När '''-A''' , '''-B''' eller '''-C''' används, skriv ut ''SEP'' istället för '''--'''
| |
| mellan grupper av linjer.
| |
|
| |
| '''--no-group-separator'''
| |
| När '''-A''' , '''-B''' eller '''-C''' används, skriv inte ut en separator
| |
| mellan grupper av linjer.
| |
|
| |
| '''Val av fil och katalog'''
| |
| '''-a''' , '''--text'''
| |
| Bearbeta en binär fil som om det vore text; detta är
| |
| motsvarar alternativet '''--binary-files=text''' .
| |
|
| |
| '''--binära-filer=''' ''TYP''
| |
| Om en fils data eller metadata indikerar att filen
| |
| innehåller binär data, anta att filen är av typen
| |
| ''TYP'' . Icke-textbytes indikerar binära data; dessa är
| |
| antingen utdatabytes som är felaktigt kodade för
| |
| aktuell lokal eller noll-indatabyte när alternativet '''-z''' är
| |
| inte givit.
| |
|
| |
| Som standard är ''TYPE'' '''binär''' och '''grep''' undertrycker utdata
| |
| efter att noll-ingången upptäcks binär data och undertrycks
| |
| utdatarader som innehåller felaktigt kodade data. När
| |
| viss utdata är undertryckt, '''grep''' följer alla utdata med a
| |
| meddelande till standardfel som säger att en binär fil
| |
| tändstickor.
| |
|
| |
| Om ''TYPE'' är '''utan-matchning''' , när '''grep''' upptäcker noll-ingång
| |
| binära data antar det att resten av filen inte gör det
| |
| match; detta motsvarar alternativet '''-I''' .
| |
|
| |
| Om ''TYPE'' är '''text''' bearbetar '''grep''' en binär fil som om den vore den
| |
| var text; detta motsvarar alternativet '''-a''' .
| |
|
| |
| När ''typen'' är '''binär''' kan '''grep''' behandla icke-textbytes som rad
| |
| terminatorer även utan alternativet '''-z''' . Detta betyder
| |
| att välja '''binär''' kontra '''text''' kan påverka om ett mönster
| |
| matchar en fil. Till exempel , när ''typen'' är '''binär'''
| |
| mönster '''q$ kan''' matcha '''q''' omedelbart följt av en noll
| |
| byte, även om detta inte matchas när ''typen'' är '''text''' .
| |
| Omvänt, när ''typen'' är '''binär''' mönstret '''.''' (period)
| |
| kanske inte matchar en nollbyte.
| |
|
| |
| ''Varning:'' Alternativet '''-a''' kan mata ut binärt skräp, vilket
| |
| kan ha otäcka biverkningar om utgången är en terminal
| |
| och om terminaldrivrutinen tolkar en del av det som
| |
| kommandon. Å andra sidan, när man läser filer vars
| |
| textkodningar är okända, det kan vara bra att använda '''-a''' eller
| |
| för att ställa in '''LC_ALL='C'''' i miljön, för att hitta
| |
| fler matcher även om matcherna är osäkra för direkt
| |
| visa.
| |
|
| |
| '''-D''' ''ACTION'' , '''--devices=''' ''ACTION''
| |
| Om en indatafil är en enhet, FIFO eller socket, använd ''ACTION''
| |
| för att bearbeta den. Som standard läses ''ACTION'' ''',''' vilket betyder
| |
| att enheter läses precis som om de vore vanliga filer.
| |
| Om ''ACTION'' är '''hoppa över''' , hoppas enheterna över tyst.
| |
|
| |
| '''-d''' ''ACTION'' , '''--directorys=''' ''ACTION''
| |
| Om en indatafil är en katalog, använd ''ACTION'' för att bearbeta den.
| |
| Som standard är ''ACTION'' '''läs''' , dvs läs kataloger precis som
| |
| om de var vanliga filer. Om ''ACTION'' är '''hoppa över''' , tyst
| |
| hoppa över kataloger. Om ''ACTION'' är '''recurse''' , läs alla filer
| |
| under varje katalog, rekursivt, efter symboliskt
| |
| länkar endast om de finns på kommandoraden. Detta är
| |
| motsvarar alternativet '''-r''' .
| |
|
| |
| '''--exclude=''' ''GLOB''
| |
| Hoppa över alla kommandoradsfiler med ett namnsuffix som matchar
| |
| mönstret ''GLOB'' , med hjälp av jokerteckenmatchning; ett namnsuffix
| |
| är antingen hela namnet eller en avslutande del som börjar
| |
| med ett snedstreck omedelbart efter ett snedstreck ( '''/''' )
| |
| i namnet. Hoppa över valfri underfil när du söker rekursivt
| |
| vars basnamn matchar ''GLOB'' ; basnamnet är delen
| |
| efter sista snedstrecket. Ett mönster kan använda '''*''' , '''?''' , och '''[''' ... ''']'''
| |
| som jokertecken, och '''\''' för att citera ett jokertecken eller omvänt snedstreck
| |
| karaktär bokstavligen.
| |
|
| |
| '''--exclude-from=''' ''FIL''
| |
| Hoppa över filer vars basnamn matchar något av filnamnen
| |
| globs som läses från ''FILE'' (med hjälp av jokerteckenmatchning enligt beskrivningen
| |
| under '''--exclude''' ).
| |
|
| |
| '''--exclude-dir=''' ''GLOB''
| |
| Hoppa över en kommandoradskatalog med ett namnsuffix som
| |
| matchar mönstret ''GLOB'' . När du söker rekursivt,
| |
| hoppa över alla underkataloger vars basnamn matchar ''GLOB'' .
| |
| Ignorera eventuella överflödiga snedstreck i ''GLOB'' .
| |
|
| |
| '''-Jag''' bearbetar en binär fil som om den inte innehåller matchning
| |
| data; detta motsvarar
| |
| '''--binary-files=utan-matchningsalternativ''' .
| |
|
| |
| '''--include=''' ''GLOB''
| |
| Sök endast efter filer vars basnamn matchar ''GLOB'' (med
| |
| jokerteckenmatchning som beskrivs under '''--exclude''' ). Om
| |
| motsägelsefulla '''--inkludera''' och '''--exkludera''' alternativ ges,
| |
| den sista matchande vinner. Om nej '''--inkludera''' eller '''--exkludera'''
| |
| alternativ matchar, en fil ingår om inte den första sådana
| |
| alternativet är '''--inkludera''' .
| |
|
| |
| '''-r''' , '''--rekursiv'''
| |
| Läs alla filer under varje katalog, rekursivt,
| |
| följer endast symboliska länkar om de är på kommandot
| |
| linje. Observera att om ingen filoperand ges, '''grep'''
| |
| söker i arbetskatalogen. Detta motsvarar
| |
| '''-d''' rekursalternativ.
| |
|
| |
| '''-R''' , '''--dereferens-rekursiv'''
| |
| Läs alla filer under varje katalog, rekursivt. Följ
| |
| alla symboliska länkar, till skillnad från '''-r''' .
| |
|
| |
| '''Andra alternativ'''
| |
| '''--line-buffrad'''
| |
| Använd linjebuffring vid utdata. Detta kan orsaka a
| |
| prestationsstraff.
| |
|
| |
| '''-U''' , '''--binär'''
| |
| Behandla filen/filerna som binära. Som standard, under MS-DOS och
| |
| MS-Windows, '''grep''' gissar om en fil är text eller binär
| |
| som beskrivs för alternativet '''--binary-files''' . Om '''grep'''
| |
| bestämmer att filen är en textfil, tar den bort CR
| |
| tecken från originalfilens innehåll (att göra
| |
| reguljära uttryck med '''^''' och '''$''' fungerar korrekt).
| |
| Att specificera '''-U''' åsidosätter denna gissning, vilket orsakar alla filer
| |
| att läsas och överföras till matchningsmekanismen ordagrant;
| |
| om filen är en textfil med CR/LF-par i slutet av
| |
| varje rad kommer detta att orsaka vissa reguljära uttryck
| |
| misslyckas. Det här alternativet har ingen effekt på andra plattformar än
| |
| MS-DOS och MS-Windows.
| |
|
| |
| '''-z''' , '''--null-data'''
| |
| Behandla in- och utdata som sekvenser av rader, var och en
| |
| avslutas med en noll byte (ASCII NUL-tecknet)
| |
| istället för en nyrad. Som alternativet '''-Z''' eller '''--null''' , detta
| |
| alternativet kan användas med kommandon som '''sort -z''' för att bearbeta
| |
| godtyckliga filnamn.
| |
|
| |
|
| == Regular Expressions == | | === Exempel === |
| Ett reguljärt uttryck är ett mönster som beskriver en uppsättning av
| | Här är några praktiska exempel som visar hur du kan använda `grep`-kommandot: |
| strängar. Reguljära uttryck konstrueras analogt med
| |
| aritmetiska uttryck, genom att använda olika operatorer för att kombinera
| |
| mindre uttryck.
| |
|
| |
| '''grep''' förstår tre olika versioner av reguljärt uttryck
| |
| syntax: "basic" (BRE), "extended" (ERE) och "perl" (PCRE). I
| |
| GNU '''grep''' , grundläggande och utökade reguljära uttryck är bara
| |
| olika notationer för samma mönstermatchande funktionalitet.
| |
| I andra implementeringar är grundläggande reguljära uttryck
| |
| vanligtvis mindre kraftfull än förlängd, även om den ibland är det
| |
| tvärtom. Följande beskrivning gäller
| |
| utökade reguljära uttryck; skillnader för grundläggande regelbunden
| |
| uttryck sammanfattas efteråt. Perl-kompatibel vanlig
| |
| uttryck har olika funktionalitet och är dokumenterade i
| |
| pcre2syntax(3) och pcre2pattern(3) , men fungerar bara om PCRE stöder
| |
| är aktiverat.
| |
|
| |
| De grundläggande byggstenarna är de reguljära uttrycken som
| |
| matcha ett enda tecken. De flesta tecken, inklusive alla bokstäver
| |
| och siffror, är reguljära uttryck som matchar sig själva. Några
| |
| meta-tecken med speciell betydelse kan citeras genom att föregå den
| |
| med ett snedstreck.
| |
|
| |
| Perioden '''.''' matchar vilket enskilt tecken som helst. Det är ospecificerat
| |
| om det matchar ett kodningsfel.
| |
|
| |
| '''Teckenklasser och parentesuttryck'''
| |
| Ett ''parentesuttryck'' är en lista över tecken som omges av '''[''' och ''']''' .
| |
| Det matchar alla enstaka tecken i den listan. Om den första
| |
| karaktären i listan är raden '''^''' då matchar den någon
| |
| tecken ''som inte finns'' i listan; det är ospecificerat om det matchar
| |
| ett kodningsfel. Till exempel det reguljära uttrycket
| |
| '''[0123456789]''' matchar vilken enskild siffra som helst.
| |
|
| |
| Inom ett parentesuttryck består ett ''intervalluttryck'' av två
| |
| tecken separerade med bindestreck. Det matchar vilken singel som helst
| |
| tecken som sorterar mellan de två tecknen, inklusive, med hjälp av
| |
| lokalens sorteringssekvens och teckenuppsättning. Till exempel,
| |
| i standardläget C motsvarar '''[ad] [abcd]''' . Många
| |
| lokaler sorterar tecken i ordboksordning, och i dessa språk
| |
| '''[ad]''' är vanligtvis inte likvärdig med '''[abcd]''' ; det kan vara
| |
| motsvarande '''[aBbCcDd]''' , till exempel. För att få det traditionella
| |
| tolkning av parentesuttryck kan du använda C-lokalen
| |
| genom att sätta miljövariabeln '''LC_ALL''' till värdet '''C''' .
| |
|
| |
| Slutligen är vissa namngivna teckenklasser fördefinierade
| |
| inom parentes uttryck, enligt följande. Deras namn är själv
| |
| förklarande, och de är '''[:alnum:]''' , '''[:alfa:]''' , '''[:blank:]''' ,
| |
| '''[:cntrl:]''' , '''[:siffra:]''' , '''[:graf:]''' , '''[:nedre:]''' , '''[:print :]''' , '''[:punct:]''' ,
| |
| '''[:mellanslag:]''' , '''[:upper:]''' och '''[:xdigit:]''' . Till exempel '''<nowiki>[[:alnum:]]</nowiki>'''
| |
| betyder teckenklassen av siffror och bokstäver i den aktuella
| |
| plats. I C locale och ASCII teckenuppsättning kodning, detta
| |
| är samma som '''[0-9A-Za-z]''' . (Observera att parenteserna i dessa
| |
| klassnamn är en del av de symboliska namnen och måste inkluderas
| |
| utöver parenteserna som avgränsar parentesuttrycket.)
| |
| De flesta meta-tecken förlorar sin speciella betydelse inom parentes
| |
| uttryck. För att inkludera en bokstavlig ''']''' placera den först i listan.
| |
| På samma sätt, för att inkludera en bokstavlig '''^''' placera den var som helst utom först.
| |
| Slutligen, för att inkludera en bokstavlig '''-''' placera den sist.
| |
|
| |
| '''Förankring'''
| |
| The caret '''^''' och dollartecknet '''$''' är meta-tecken som
| |
| matcha den tomma strängen i början och slutet av en
| |
| linje.
| |
|
| |
| '''Omvänt snedstreck och specialuttryck'''
| |
| Symbolerna '''\<''' och '''\>''' matchar den tomma strängen vid
| |
| början och slutet av ett ord. Symbolen '''\b''' matchar den tomma
| |
| sträng i kanten av ett ord, och '''\B''' matchar den tomma strängen
| |
| förutsatt att det ''inte'' är på kanten av ett ord. Symbolen '''\w''' är a
| |
| synonym för '''[_[:alnum:]]''' och '''\W''' är en synonym för '''[^_[:alnum:]]''' .
| |
|
| |
| '''Upprepning'''
| |
| Ett reguljärt uttryck kan följas av en av flera upprepningar
| |
| operatörer:
| |
| '''?''' Det föregående objektet är valfritt och matchas högst en gång.
| |
| '''*''' Föregående post kommer att matchas noll eller fler gånger.
| |
| '''+''' Föregående objekt kommer att matchas en eller flera gånger.
| |
| '''{''' ''n'' '''}''' Det föregående objektet matchas exakt ''n'' gånger.
| |
| '''{''' ''n'' ''',}''' Det föregående objektet matchas ''n'' eller flera gånger.
| |
| '''{,''' ''m'' '''}''' Föregående post matchas högst ''m'' gånger. Det här är en
| |
| GNU förlängning.
| |
| '''{''' ''n'' ''',''' ''m'' '''}''' Det föregående objektet matchas minst ''n'' gånger, men inte
| |
| mer än ''m'' gånger.
| |
|
| |
| '''Sammankoppling'''
| |
| Två reguljära uttryck kan vara sammanlänkade; det resulterande
| |
| reguljära uttryck matchar alla strängar som bildas genom att sammanfoga två
| |
| delsträngar som matchar de sammanlänkade uttrycken.
| |
|
| |
| '''Alternering'''
| |
| Två reguljära uttryck kan förenas med infixoperatorn '''|''' ;
| |
| det resulterande reguljära uttrycket matchar vilken sträng som helst
| |
| antingen alternativt uttryck.
| |
|
| |
| '''Företräde'''
| |
| Upprepning har företräde framför sammanlänkning, som i sin tur
| |
| har företräde framför alternering. Ett helt uttryck kan vara
| |
| inom parentes för att åsidosätta dessa prioritetsregler och
| |
| bilda ett underuttryck.
| |
|
| |
| '''Bakåtreferenser och underuttryck'''
| |
| Bakåtreferensen '''\''' ''n'' , där ''n'' är en enkelsiffra, matchar
| |
| delsträng som tidigare matchats av den ''n:'' te parentesen
| |
| underuttryck av det reguljära uttrycket.
| |
|
| |
| '''Grundläggande vs utökade reguljära uttryck'''
| |
| I grundläggande reguljära uttryck är meta-tecken '''?''' , '''+''' , '''{''' , '''|''' , '''(''' ,
| |
| och ''')''' förlorar sin speciella betydelse; använd istället det omvända snedstrecket
| |
| versioner '''\?''' , '''\+''' , '''\{''' , '''\|''' , '''\(''' , och '''\)''' .
| |
|
| |
|
| == EXIT STATUS ==
| | * För att söka efter ett mönster i en fil: |
| Normalt är utgångsstatusen 0 om en linje väljs, 1 om nej
| | <code> |
| rader valdes och 2 om ett fel inträffade. Men om
| | grep "mönster" fil.txt |
| '''-q''' eller '''--quiet''' eller '''--silent''' används och en linje väljs, den
| | </code> |
| utgångsstatus är 0 även om ett fel uppstod.
| |
|
| |
|
| == MILJÖ ==
| | * För att söka efter ett mönster i flera filer: |
| Beteendet för '''grep''' påverkas av följande miljö
| | <code> |
| variabler.
| | grep "mönster" fil1.txt fil2.txt |
|
| | </code> |
| Lokalen för kategorin '''LC_''' ''foo'' specificeras genom att undersöka
| |
| tre miljövariabler '''LC_ALL''' , '''LC_''' ''foo'' , '''LANG''' , i den ordningen.
| |
| Den första av dessa variabler som ställs in anger lokalen.
| |
| Till exempel, om '''LC_ALL''' inte är inställt, men '''LC_MESSAGES''' är satt till
| |
| '''pt_BR''' , används den brasilianska portugisiska språkversionen för
| |
| kategorin '''LC_MESSAGES''' . C-lokalen används om ingen av dessa
| |
| miljövariabler ställs in, om lokalkatalogen inte är det
| |
| installerat, eller om '''grep''' inte kompilerades med det nationella språket
| |
| stöd (NLS). Skalkommandot '''locale -a''' listar lokaler som
| |
| finns för närvarande tillgängliga.
| |
|
| |
| '''GREP_COLORS'''
| |
| Styr hur alternativet '''--color''' markerar utdata. Dess
| |
| värde är en kolonseparerad lista över funktioner som
| |
| standard till
| |
| '''ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36''' med
| |
| '''rv''' och '''ne''' booleska funktioner utelämnade (dvs. falskt).
| |
| De funktioner som stöds är följande.
| |
|
| |
| '''sl=''' SGR-delsträng för hela valda linjer (dvs.
| |
| matchande rader när kommandoradsalternativet '''-v är'''
| |
| utelämnade eller icke-matchande rader när '''-v''' är
| |
| specificerad). Om dock den booleska '''rv-''' kapaciteten
| |
| och kommandoradsalternativet '''-v är båda specificerade,'''
| |
| det gäller istället för kontextmatchande linjer. De
| |
| default är tom (dvs terminalens standard
| |
| färgpar).
| |
|
| |
| '''cx=''' SGR-delsträng för hela kontextlinjer (dvs icke-
| |
| matchande rader när kommandoradsalternativet '''-v är'''
| |
| utelämnade eller matchande rader när '''-v''' är specificerad).
| |
| Om däremot den booleska '''rv-''' förmågan och '''-v'''
| |
| kommandoradsalternativ är båda specificerade, det gäller
| |
| till valda icke-matchande rader istället. De
| |
| default är tom (dvs terminalens standard
| |
| färgpar).
| |
|
| |
| '''rv''' booleskt värde som vänder (byter) betydelsen av
| |
| funktionerna '''sl=''' och '''cx=''' när kommandot '''-v-'''
| |
| linjealternativet anges. Standardinställningen är falsk
| |
| (dvs. förmågan utelämnas).
| |
|
| |
| '''mt=01;31'''
| |
| SGR-delsträng för att matcha icke-tom text i någon
| |
| matchande linje (dvs en vald linje när '''-v'''
| |
| kommandoradsalternativet utelämnas, eller en kontextrad
| |
| när '''-v''' är specificerad). Att ställa in detta är likvärdigt
| |
| att ställa in både '''ms=''' och '''mc=''' samtidigt till samma
| |
| värde. Standard är en fet röd textförgrund
| |
| över den aktuella linjens bakgrund.
| |
|
| |
| '''ms=01;31'''
| |
| SGR-delsträng för att matcha icke-tom text i en
| |
| vald rad. (Detta används endast när '''-v'''
| |
| kommandoradsalternativet utelämnas.) Effekten av
| |
| '''sl=''' (eller '''cx=''' om '''rv''' ) förblir aktiv när
| |
| detta sätter igång. Standard är en fet röd text
| |
| förgrunden över den aktuella linjens bakgrund.
| |
| | |
| '''mc=01;31'''
| |
| SGR-delsträng för att matcha icke-tom text i en
| |
| kontextrad. (Detta används endast när '''-v'''
| |
| kommandoradsalternativet anges.) Effekten av
| |
| förmågan cx '''=''' (eller '''sl=''' om '''rv''' ) förblir aktiv
| |
| när detta startar. Standard är en fet röd text
| |
| förgrunden över den aktuella linjens bakgrund.
| |
|
| |
| '''fn=35''' SGR-delsträng för filnamn med prefix för något innehåll
| |
| linje. Standard är en magentafärgad textförgrund
| |
| över terminalens standardbakgrund.
| |
| | |
| '''ln=32''' SGR-delsträng för radnummer som föregår någon
| |
| innehållsraden. Standard är en grön text
| |
| förgrunden över terminalens standardbakgrund.
| |
|
| |
| '''bn=32''' SGR-delsträng för byteförskjutningar som prefixar någon
| |
| innehållsraden. Standard är en grön text
| |
| förgrunden över terminalens standardbakgrund.
| |
|
| |
| '''se=36''' SGR-delsträng för separatorer som infogas
| |
| mellan valda radfält ( ''':''' ), mellan sammanhang
| |
| linjefält, ( '''-''' ), och mellan grupper av angränsande
| |
| rader när kontext som inte är noll anges ( '''--''' ). De
| |
| standard är en cyan textförgrund över
| |
| terminalens standardbakgrund.
| |
|
| |
| '''ne''' booleskt värde som förhindrar rensning till slutet av
| |
| rad med radera rad (EL) till höger ( '''\33[K''' ) vardera
| |
| gång ett färgat föremål slutar. Detta behövs på
| |
| terminaler där EL inte stöds. Det är
| |
| annars användbar på terminaler för vilka
| |
| '''back_color_erase''' ( '''fvt''' ) boolesk terminfo-förmåga
| |
| gäller inte när de valda markeringsfärgerna gör det
| |
| inte påverkar bakgrunden, eller när EL är för långsam
| |
| eller orsakar för mycket flimmer. Standardinställningen är falsk
| |
| (dvs. förmågan utelämnas).
| |
|
| |
| Observera att booleska kapaciteter har ingen '''=''' ... del. De
| |
| utelämnas (dvs. falskt) som standard och blir sanna när
| |
| specificerad.
| |
|
| |
| Se avsnittet Select Graphic Rendition (SGR) i
| |
| dokumentation av textterminalen som används för
| |
| tillåtna värden och deras betydelse som karaktär
| |
| attribut. Dessa delsträngvärden är heltal i
| |
| decimalrepresentation och kan sättas samman med
| |
| semikolon. '''grep''' tar hand om att sätta ihop resultatet till
| |
| en fullständig SGR-sekvens ( '''\33[''' ... '''m''' ). Gemensamma värderingar till
| |
| sammanfoga inkluderar '''1''' för fetstil, '''4''' för understrykning, '''5''' för
| |
| blinka, '''7''' för invers, '''39''' för standardförgrundsfärg, '''30'''
| |
| till '''37''' för förgrundsfärger, '''90''' till '''97''' för 16-färgsläge
| |
| förgrundsfärger, '''38;5;0''' till '''38;5;255''' för 88-färger och
| |
| 256-färgsläges förgrundsfärger, '''49''' som standard
| |
| bakgrundsfärg, '''40''' till '''47''' för bakgrundsfärger, '''100''' till
| |
| '''107''' för 16-färgsläges bakgrundsfärger och '''48;5;0''' till
| |
| '''48;5;255''' för 88-färgslägen och 256-färgslägen bakgrund
| |
| färger.
| |
| | |
| '''LC_ALL''' , '''LC_COLLATE''' , '''LANG'''
| |
| Dessa variabler anger språket för '''LC_COLLATE'''
| |
| kategori, som bestämmer sorteringssekvensen som används för
| |
| tolka intervalluttryck som '''[az]''' .
| |
|
| |
| '''LC_ALL''' , '''LC_CTYPE''' , '''LANG'''
| |
| Dessa variabler anger lokalen för '''LC_CTYPE'''
| |
| kategori, som bestämmer typen av tecken, t.ex.
| |
| vilka tecken är blanksteg. Även denna kategori
| |
| bestämmer teckenkodningen, det vill säga om text
| |
| är kodad i UTF-8, ASCII eller någon annan kodning. I
| |
| C- eller POSIX-språket är alla tecken kodade som en
| |
| en byte och varje byte är ett giltigt tecken.
| |
|
| |
| '''LC_ALL''' , '''LC_MESSAGES''' , '''LANG'''
| |
| Dessa variabler anger språket för kategorin '''LC_MESSAGES'''
| |
| , som bestämmer språket som '''grep''' använder för
| |
| meddelanden. Standardinställningen för C använder amerikansk engelska
| |
| meddelanden.
| |
|
| |
| '''POSIXLY_CORRECT'''
| |
| Om inställt, fungerar '''grep''' som POSIX kräver; annars, '''grep'''
| |
| beter sig mer som andra GNU-program. POSIX kräver det
| |
| alternativ som följer filnamn måste behandlas som fil
| |
| namn; som standard är sådana alternativ permuterade till framsidan
| |
| i operandlistan och behandlas som alternativ. Också,
| |
| POSIX kräver att okända alternativ diagnostiseras som
| |
| ”olagliga”, men eftersom de egentligen inte strider mot lagen
| |
| standarden är att diagnostisera dem som "ogiltiga".
| |
|
| |
|
| == NOTERA ==
| | * För att ignorera skiftlägeskänslighet vid sökning: |
| Denna man-sida underhålls endast på rätt sätt; hela dokumentationen
| | <code> |
| är ofta mer aktuell.
| | grep -i "mönster" fil.txt |
| | </code> |
|
| |
|
| == COPYRIGHT ==
| | * För att visa radnummer för varje träff: |
| Copyright 1998-2000, 2002, 2005-2023 Free Software Foundation,
| | <code> |
| Inc.
| | grep -n "mönster" fil.txt |
| | | </code> |
| Detta är fri programvara; se källan för kopieringsvillkor.
| |
| Det finns INGEN garanti; inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR
| |
| ETT SÄRSKILT SYFTE.
| |
|
| |
|
| == BUGS ==
| | * För att söka rekursivt i kataloger: |
| '''Rapportera buggar'''
| | <code> |
| E-posta felrapporter till felrapporteringsadressen ⟨bug-
| | grep -r "mönster" katalog/ |
| grep@gnu.org⟩. Ett e-postarkiv
| | </code> |
| ⟨ <nowiki>https://lists.gnu.org/mailman/listinfo/bug-grep</nowiki> ⟩ och en bugg
| |
| tracker ⟨ <nowiki>https://debbugs.gnu.org/cgi/pkgreport.cgi?package=grep</nowiki> ⟩
| |
| finns tillgängliga.
| |
|
| |
| '''Kända fel'''
| |
| Stora upprepningar i '''{''' ''n'' ''',''' ''m'' '''}''' -konstruktionen kan göra att '''grep'''
| |
| använda mycket minne. Dessutom vissa andra obskyra regelbundna
| |
| uttryck kräver exponentiell tid och rum, och kan orsaka
| |
| '''grep''' för att få slut på minne.
| |
|
| |
| Bakåtreferenser är mycket långsamma och kan kräva exponentiell tid.
| |
|
| |
|
| == EXEMPEL ==
| | * För att visa antalet matchande rader: |
| Följande exempel visar platsen och innehållet för eventuella
| | <code> |
| rad som innehåller "f" och slutar på ".c", inom alla filer i
| | grep -c "mönster" fil.txt |
| aktuell katalog vars namn innehåller "g" och slutar på ".h". De
| | </code> |
| '''Alternativet -n''' matar ut radnummer, argumentet '''--''' behandlar expansioner
| |
| av "*g*.h" som börjar med "-" som filnamn inte alternativ, och
| |
| tom fil /dev/null gör att filnamn matas ut även om bara
| |
| ett filnamn råkar ha formen "*g*.h".
| |
| | |
| $ '''grep''' -n -- 'f.*\.c$' *g*.h /dev/null
| |
| argmatch.h:1:/* definitioner och prototyper för argmatch.c
| |
| | |
| Den enda raden som matchar är rad 1 i argmatch.h. Anteckna det
| |
| Syntaxen för reguljära uttryck som används i mönstret skiljer sig från
| |
| den globbing-syntax som skalet använder för att matcha filnamn.
| |
|
| |
|
| == SE ÄVEN ==
| | * För att skriva ut filnamn för varje träff: |
| '''Regular Manual Pages'''
| | <code> |
| '''awk''' (1), cmp(1) , diff(1) , find(1) , '''perl''' (1), sed(1) , sort(1) ,
| | grep -H "mönster" fil.txt |
| xargs(1) , read(2) , pcre2( 3) , pcre2syntax(3) , pcre2pattern(3) ,
| | </code> |
| terminfo(5) , glob(7) , regex(7)
| |
| | |
| '''Fullständig dokumentation'''
| |
| En komplett manual ⟨ <nowiki>https://www.gnu.org/software/grep/manual/</nowiki> ⟩ är
| |
| tillgängliga. Om '''info-''' och '''grep''' -programmen är korrekt installerade
| |
| på din webbplats, kommandot
| |
| | |
| '''info grep'''
| |
|
| |
| bör ge dig tillgång till hela manualen.
| |
|
| |
|
| == KOLOFON == | | * För att skriva ut kontext före och efter varje träff: |
| Den här sidan är en del av ''GNU grep'' (filsökning med reguljära uttryck
| | <code> |
| verktyg) projekt. Information om projektet finns på
| | grep -C 2 "mönster" fil.txt |
| ⟨ <nowiki>https://www.gnu.org/software/grep/</nowiki> ⟩. Om du har en felrapport
| | </code> |
| för denna manualsida, skicka den till bug-grep@gnu.org. Den här sidan var
| | |
| hämtat från projektets uppströms Git-förråd
| | * För att endast visa de delar av raderna som matchar mönstret: |
| ⟨<nowiki>git://git.savannah.gnu.org/grep.git⟩</nowiki> den 2023-12-22. (Vid den
| | <code> |
| tid, datumet för den senaste commit som hittades i
| | grep -o "mönster" fil.txt |
| repository var 2023-09-14.) Om du upptäcker någon rendering
| | </code> |
| problem i den här HTML-versionen av sidan, eller så tror du det
| | |
| är en bättre eller mer uppdaterad källa för sidan, eller så har du
| | === Skillnader mellan macOS och Linux === |
| korrigeringar eller förbättringar av informationen i denna KOLOFON
| | Det finns några viktiga skillnader att tänka på när man använder `grep`-kommandot på macOS jämfört med Linux: |
| (som ''inte'' är en del av den ursprungliga manualsidan), skicka ett mail till
| | |
| man-pages@man7.org
| | * 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`. |
| GNU grep 3.11.21-102b-dirty 2019-12-29 ''GREP'' (1)
| | |
| [[Kategori:Linux Kommando]] | | 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: |
| | <code> |
| | grep --color "mönster" fil.txt |
| | </code> |
| | 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: |
| | <code> |
| | grep -P "mönster" fil.txt |
| | </code> |
| | 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 === |
| | * [https://www.gnu.org/software/grep/manual/grep.html GNU grep manual] |
| | |
| | [[Kategori:Linuxkommandon]] |