grep(1p)
PROLOG
Denna manualsida är en del av POSIX Programmer's Manual. Linux-implementationen av detta gränssnitt kan skilja sig åt; se motsvarande Linux-manualsida för detaljer om Linux-beteende. Gränssnittet kanske inte heller är implementerat på Linux.
NAMN
grep — sök i en fil efter ett mönster
SYNOPSIS
grep [-E|-F] [-c|-l|-q] [-insvx] -e mönsterlista
[-e mönsterlista]... [-f mönsterfil]... [fil...]
grep [-E|-F] [-c|-l|-q] [-insvx] [-e mönsterlista]...
-f mönsterfil [-f mönsterfil]... [fil...]
grep [-E|-F] [-c|-l|-q] [-insvx] mönsterlista [fil...]
BESKRIVNING
Verktyget grep ska söka igenom indatafilerna och välja rader som matchar ett eller flera mönster. Vilka typer av mönster som används styrs av de angivna flaggorna. Mönstren anges med flaggan -e, flaggan -f eller operanden mönsterlista.
Värdet för mönsterlista ska bestå av ett eller flera mönster separerade med radbrytningstecken. Innehållet i mönsterfil ska bestå av ett eller flera mönster avslutade med radbrytningstecken.
Som standard ska en indatarad väljas om något mönster, behandlat som ett helt grundläggande reguljärt uttryck, BRE, enligt Base Definitions-volymen av POSIX.1-2017, avsnitt 9.3, Basic Regular Expressions, matchar någon del av raden, exklusive det avslutande radbrytningstecknet. Ett tomt BRE ska matcha varje rad.
Som standard ska varje vald indatarad skrivas till standardutmatningen.
Matchning med reguljära uttryck ska baseras på textrader. Eftersom ett radbrytningstecken separerar eller avslutar mönster, se flaggorna -e och -f nedan, kan reguljära uttryck inte innehålla ett radbrytningstecken. På samma sätt, eftersom mönster matchas mot enskilda rader i indata, exklusive avslutande radbrytningstecken, finns det inget sätt för ett mönster att matcha ett radbrytningstecken som finns i indata.
FLAGGOR
Verktyget grep ska följa Base Definitions-volymen av POSIX.1-2017, avsnitt 12.2, Utility Syntax Guidelines.
Följande flaggor ska stödjas:
-E
Matcha med utökade reguljära uttryck. Behandla varje angivet mönster som ett ERE enligt Base Definitions-volymen av POSIX.1-2017, avsnitt 9.4, Extended Regular Expressions. Om ett helt ERE-mönster matchar någon del av en indatarad, exklusive det avslutande radbrytningstecknet, ska raden anses matcha. Ett tomt ERE ska matcha varje rad.
-F
Matcha med fasta strängar. Behandla varje angivet mönster som en sträng i stället för ett reguljärt uttryck. Om en indatarad innehåller något av mönstren som en sammanhängande följd av byte, ska raden anses matcha. En tom sträng ska matcha varje rad.
-c
Skriv endast ett antal valda rader till standardutmatningen.
-e mönsterlista
Ange ett eller flera mönster som ska användas vid sökning i indata. Programmet ska säkerställa att mönstren i mönsterlista separeras med radbrytningstecken. Ett tomt mönster kan anges med två intilliggande radbrytningstecken i mönsterlista.
Om inte flaggan -E eller -F också anges, ska varje mönster behandlas som ett BRE enligt Base Definitions-volymen av POSIX.1-2017, avsnitt 9.3, Basic Regular Expressions.
Flera -e- och -f-flaggor ska accepteras av verktyget grep. Alla angivna mönster ska användas vid matchning av rader, men ordningen för utvärdering är ospecificerad.
-f mönsterfil
Läs ett eller flera mönster från filen som anges av sökvägen mönsterfil. Mönstren i mönsterfil ska avslutas med radbrytningstecken. Ett tomt mönster kan anges med en tom rad i mönsterfil.
Om inte flaggan -E eller -F också anges, ska varje mönster behandlas som ett BRE enligt Base Definitions-volymen av POSIX.1-2017, avsnitt 9.3, Basic Regular Expressions.
-i
Utför mönstermatchning utan hänsyn till skiftläge. Se Base Definitions-volymen av POSIX.1-2017, avsnitt 9.2, Regular Expression General Requirements.
-l
Bokstaven ell. Skriv endast namnen på filer som innehåller valda rader till standardutmatningen. Sökvägar ska skrivas en gång per genomsökt fil. Om standardindata genomsöks ska sökvägen "(standard input)" skrivas i POSIX-lokalen. I andra lokaler kan "standard input" ersättas av något mer passande för dessa lokaler.
-n
Föregå varje utmatad rad med dess relativa radnummer i filen, där varje fil börjar på rad 1. Radnummer-räknaren ska återställas för varje behandlad fil.
-q
Tyst läge. Ingenting ska skrivas till standardutmatningen, oavsett matchande rader. Avsluta med status noll om en indatarad väljs.
-s
Undertryck felmeddelanden som normalt skrivs för filer som inte finns eller inte kan läsas. Andra felmeddelanden ska inte undertryckas.
-v
Välj rader som inte matchar något av de angivna mönstren. Om flaggan -v inte anges, ska valda rader vara de som matchar något av de angivna mönstren.
-x
Betrakta endast indatarader där alla tecken i raden, exklusive det avslutande radbrytningstecknet, används för att matcha en hel fast sträng eller ett helt reguljärt uttryck som matchande rader.
OPERANDER
Följande operander ska stödjas:
mönsterlista
Anger ett eller flera mönster som ska användas vid sökning i indata. Denna operand ska behandlas som om den hade angetts som -e mönsterlista.
fil
En sökväg till en fil som ska genomsökas efter mönstren. Om inga fil-operander anges ska standardindata användas.
STDIN
Standardindata ska användas om inga fil-operander anges, och ska användas om en fil-operand är - och implementationen behandlar - som standardindata. I annat fall ska standardindata inte användas. Se avsnittet INDATAFILER.
INDATAFILER
Indatafilerna ska vara textfiler.
MILJÖVARIABLER
Följande miljövariabler ska påverka körningen av grep:
LANG
Ger ett standardvärde för internationaliseringsvariabler som är osatta eller tomma. Se Base Definitions-volymen av POSIX.1-2017, avsnitt 8.2, Internationalization Variables, för prioritetsordningen mellan internationaliseringsvariabler som används för att bestämma värdena för lokalkategorier.
LC_ALL
Om den är satt till ett icke-tomt strängvärde, åsidosätter den värdena för alla andra internationaliseringsvariabler.
LC_COLLATE
Bestämmer lokalen för beteendet hos intervall, ekvivalensklasser och flerteckens sorteringselement inom reguljära uttryck.
LC_CTYPE
Bestämmer lokalen för tolkning av sekvenser av byte med textdata som tecken, till exempel enkelbyte- i motsats till flerbytetecken i argument och indatafiler, samt beteendet hos teckenklasser inom reguljära uttryck.
LC_MESSAGES
Bestämmer den lokal som ska användas för att påverka format och innehåll i diagnostiska meddelanden som skrivs till standardfel.
NLSPATH
Bestämmer platsen för meddelandekataloger för behandling av LC_MESSAGES.
ASYNKRONA HÄNDELSER
Standard.
STDOUT
Om flaggan -l är aktiv ska följande skrivas för varje fil som innehåller minst en vald indatarad:
"%s\n", <fil>
I annat fall, om fler än ett fil-argument förekommer och -q inte har angetts, ska verktyget grep föregå varje utmatad rad med:
"%s:", <fil>
Resten av varje utmatad rad ska bero på övriga angivna flaggor:
Om flaggan -c är aktiv ska resten av varje utmatad rad innehålla:
"%d\n", <antal>
Om -c inte är aktiv och flaggan -n är aktiv ska följande skrivas till standardutmatningen:
"%d:", <radnummer>
Slutligen ska följande skrivas till standardutmatningen:
"%s", <innehåll i vald rad>
STDERR
Standardfel ska endast användas för diagnostiska meddelanden.
UTDATAFILER
Inga.
UTÖKAD BESKRIVNING
Ingen.
SLUTSTATUS
Följande slutvärden ska returneras:
0
En eller flera rader valdes.
1
Inga rader valdes.
> 1
Ett fel inträffade.
FÖLJDER AV FEL
Om flaggan -q anges ska slutstatus vara noll om en indatarad väljs, även om ett fel upptäcktes. I annat fall ska standardåtgärder utföras.
Följande avsnitt är informativa.
PROGRAMANVÄNDNING
Försiktighet bör iakttas när tecken används i mönsterlista som också kan ha betydelse för kommandotolken. Det säkraste är att omge hela argumentet mönsterlista med enkla citattecken:
'...'
Flaggan -e mönsterlista har samma effekt som operanden mönsterlista, men är användbar när mönsterlista börjar med avgränsaren bindestreck-minus. Den är också användbar när det är mer praktiskt att ange flera mönster som separata argument.
Flera -e- och -f-flaggor accepteras och grep använder alla mönster det får vid matchning av textrader i indata. Observera att utvärderingsordningen inte är specificerad. Om en implementation hittar en tom sträng som mönster, får den använda detta mönster först, vilket matchar varje rad och i praktiken ignorerar alla andra mönster.
Flaggan -q ger ett enkelt sätt att avgöra om ett mönster eller en sträng finns i en grupp filer. När flera filer genomsöks ger den bättre prestanda, eftersom grep kan avsluta så snart den hittar den första matchningen. Den kräver också mindre omsorg från användaren vid val av filer som ska anges som argument, eftersom den avslutar med noll om den hittar en matchning även om grep upptäckte ett åtkomst- eller läsfel på tidigare fil-operander.
När grep används för att behandla sökvägar rekommenderas att LC_ALL, eller åtminstone LC_CTYPE och LC_COLLATE, sätts till POSIX eller C i miljön. Detta eftersom sökvägar kan innehålla bytesekvenser som inte bildar giltiga tecken i vissa lokaler. I sådana fall vore verktygets beteende odefinierat. I POSIX-lokalen är varje byte ett giltigt enkelbytetecken, och därför undviks detta problem.
EXEMPEL
1. För att hitta alla förekomster av ordet "Posix", oavsett skiftläge, i filen text.mm och skriva dem med radnummer:
grep -i -n posix text.mm
2. För att hitta alla tomma rader i standardindata:
grep ^$
eller:
grep -v .
3. Båda följande kommandon skriver alla rader som innehåller strängarna "abc" eller "def", eller båda:
grep -E 'abc|def'
grep -F 'abc def'
4. Båda följande kommandon skriver alla rader som matchar exakt "abc" eller "def":
grep -E '^abc$|^def$'
grep -F -x 'abc def'
BAKGRUND
Denna version av grep har utökats på ett uppåtkompatibelt sätt för att även ge exakt funktionalitet motsvarande de historiska kommandona egrep och fgrep. Standardutvecklarnas tydliga avsikt var att samla de tre grep-varianterna i ett enda kommando.
De gamla kommandona egrep och fgrep kommer sannolikt att stödjas under många år framöver som implementationstillägg, så att historiska program kan fortsätta fungera oförändrade.
Historiska implementationer ignorerade vanligtvis tyst alla utom en av flera angivna -e- och -f-flaggor, men var inte konsekventa i fråga om vilken specifikation som faktiskt användes.
Flaggan -b utelämnades från avsnittet FLAGGOR eftersom blocknummer är implementationsdefinierade.
System V-begränsningen för användning av - för att betyda standardindata utelämnades.
En definition av vilken åtgärd som ska vidtas vid ett tomt BRE eller ERE anges. Detta är ett feltillstånd i vissa historiska implementationer.
Flaggan -l angav tidigare att dess användning var odefinierad när inga filer uttryckligen namngavs. Detta beteende var historiskt och lade en onödig begränsning på framtida implementationer. Det har tagits bort.
Det historiska BSD-beteendet för flaggan grep -s kan enkelt efterliknas genom att omdirigera standardutmatningen till /dev/null. Flaggan -s som krävs här kommer från System V.
Flaggan -x, som historiskt bara fanns i fgrep, är här tillgänglig för alla icke-föråldrade versioner.
FRAMTIDA RIKTNINGAR
Inga.
SE ÄVEN
Base Definitions-volymen av POSIX.1-2017, kapitel 8, Environment Variables, kapitel 9, Regular Expressions, avsnitt 12.2, Utility Syntax Guidelines
COPYRIGHT
Delar av denna text är återgivna och reproducerade i elektronisk form från IEEE Std 1003.1-2017, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 7, 2018 Edition, Copyright (C) 2018 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group.
Vid eventuell avvikelse mellan denna version och den ursprungliga IEEE- och The Open Group-standarden är den ursprungliga standarden det avgörande dokumentet. Den ursprungliga standarden kan hämtas online på:
http://www.opengroup.org/unix/online.html
Eventuella typografiska fel eller formateringsfel som förekommer på denna sida har troligen införts vid konverteringen av källfilerna till manualsidesformat. För att rapportera sådana fel, se:
https://www.kernel.org/doc/man-pages/reporting_bugs.html
IEEE/The Open Group 2017 GREP(1P)
Sidor som hänvisar till denna sida
Sidslut
Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/grep.1p.html
Det här är en maskinöversättning av Linux man sidor 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 Datorservice som har sponsrat Linux.se med webbhotell.