Gå til innhold

Hurtighjelp, regexp hvordan greppe flere ting?


Anbefalte innlegg

cat *.txt | grep ord1

 

Enkelt og greit, finner ord1 i fil.txt og skriver ut linja der den fantes. Men jeg vil finne flere ord i et og samme søk. Enter regular expressions, som jeg ikke kan.

 

Noen som fort kan vise hvordan dette gjøres?

 

cat *.txt | grep -e REGEXP

 

Hva skal REGEXP være om jeg søker etter ord1, ord2 og ord3?

Lenke til kommentar
Videoannonse
Annonse
Etter en smule testing fant jeg det ut:

terra@terrasque:~$ cat test.py  | grep -e 'range\|nextnr'
.....

5114972[/snapback]

Yep, det funker. Men jeg skjønner det ikke. Hvorfor i all verden trenger man en \ der. For meg blir det feil, men det funker i praksis.

 

$ echo 'range\|nextnr'
range\|nextnr
$ echo range\|nextnr
range|nextnr
$ echo 'range|nextnr'
range|nextnr

 

Regexp'en inkluderer jo escape tegnet, og søket burde så vidt jeg forstå bli etter strengen

range|nextnr og ikke etter range eller nextnr. Altså pipe tegnet skulle blitt tolket som en litteral og ikke et spesielt tegn.

 

Jeg ville altså brukt en av de to siste alternativene, og ikke den som virker.

Lenke til kommentar
Yep, det funker. Men jeg skjønner det ikke. Hvorfor i all verden trenger man en \ der. For meg blir det feil, men det funker i praksis.

*klipp*

5117406[/snapback]

Problemet er at Terrasque bruker feil flagg, extended regex er -E, ikke -e (egrep-kommandoen tilsvarer forresten grep -E)

echo -ne "asdf\nqwer\nfrukt\n" | egrep "asdf|frukt"
asdf
frukt

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...