next up previous contents
Nästa: 5.2 Att söka efter Upp: 5. Hur gör man? Förra: 5. Hur gör man?

5.1 Att söka efter text

Med hjälp av kommandot grep kan man söka efter text i en fil. Syntaxen är grep mönster filnamn. Varje rad i filen filnamn som innehåller texten mönster skrivs ut.$ grep den bellman
när döden ropar: Granne, kom,
den skönsta nymf, som åt dig ler,
$
Kommandot ger ingen utskrift ifall mönstret inte påträffades:$ grep Linux bellman
$
Man får ange flera filer att söka i.$ grep ull bellman lenngren
bellman:från Bacchi buller och tumult,
bellman:     ditt timglas är nu fullt.
lenngren:hans runda armar hull och märg,
lenngren:och magen, kullrig som ett berg,
$
Om man inte anger något filnamn, så söker grep i stället efter mönstret i sin indata.$ cat bellman lenngren | grep ost
Vår prost jag häromdagen såg
sin frukost redan färdig fann
$
För de flesta ändamål klarar man sig med denna kunskap om grep. Många läsare kan alltså hoppa över resten av detta avsnitt, som ger en utförlig beskrivning av hur grep kan göra avancerade sökningar. Vi ska först beskriva några av de flaggor man kan ge grep. Sedan ska vi studera så kallade reguljära mönster som kan hjälpa oss att ge en mycket precis beskrivning av den text vi söker efter.

Om man anropar grep med flaggan -v, så skrivs de rader som inte gav träff ut.$ grep -v e bellman
Så lunka vi så småningom
     ditt timglas är nu fullt.
och du, du yngling, lyd min lag:
$
Tydligen finns det bara tre rader i filen bellman som saknar bokstaven ''e''.

Flaggan -i betyder att grep inte ska skilja mellan stora och små bokstäver:$ grep -i gra bellman
när döden ropar: Granne, kom,
Tycker du, att graven är för djup,
$
Flaggan -n får grep att numrera raderna:$ grep -n du bellman
6:och du, du yngling, lyd min lag:
9:Tycker du, att graven är för djup,
12:     så dör du nöjdare.
$
Flaggan -i, där i är ett heltal, innebär att grep också ska skriva ut de i rader som kommer före respektive efter den rad som matchar mönstret. $ grep -1 glas bellman
när döden ropar: Granne, kom,
     ditt timglas är nu fullt.
Du gubbe, fäll din krycka ner,
$
När man söker i flera filer, skriver grep i början av varje rad ut vilken fil raden kommer från. För att slippa detta ska man ge flaggan -h:$ grep -h ull bellman lenngren
från Bacchi buller och tumult,
     ditt timglas är nu fullt.
hans runda armar hull och märg,
och magen, kullrig som ett berg,
$
Om man enbart vill veta vilka filer som innehåller mönstret, så ska man ge flaggan -l.$ grep -l ull bellman lenngren
bellman
lenngren
$
Texten ''glas'' förekommer bara i filen bellman:$ grep -l glas bellman lenngren
bellman
$
Flaggan -L ger oss i stället de filer som inte innehåller mönstret:$ grep -L glas bellman lenngren
lenngren
$
För att få veta antalet träffar ska vi ge flaggan -c:$ grep -c ull bellman lenngren
bellman:2
lenngren:2
$
Flaggan -q undertrycker all utskrift från grep:$ grep -q vi bellman
lenngren
$


next up previous contents
Nästa: 5.2 Att söka efter Upp: 5. Hur gör man? Förra: 5. Hur gör man?
Goran Andersson
1999-03-08