JBlack Skrevet 6. november 2005 Skrevet 6. november 2005 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?
LessThanJake Skrevet 6. november 2005 Skrevet 6. november 2005 Dette burde funke: grep -e ord1 -e erd2 *.txt
Terrasque Skrevet 6. november 2005 Skrevet 6. november 2005 evt "-e [ord1|ord2]" kanskje? Nå er nå min regexp viten litt nedstøvet, så om det ikke virker er det derfor http://www.regular-expressions.info/
JBlack Skrevet 6. november 2005 Forfatter Skrevet 6. november 2005 (endret) Edit: Thanx, funka det, LTJ's forslag that is. Terrasque, ditt forslag ser ut til å returnere hele fila. Endret 6. november 2005 av JBlack
Terrasque Skrevet 6. november 2005 Skrevet 6. november 2005 (endret) Etter en smule testing fant jeg det ut: terra@terrasque:~$ cat test.py | grep -e 'range\|nextnr' def nextnr(x,y): for u in range(10): a,b=nextnr(a,b) # x,y = nextnr(a) Endret 6. november 2005 av Terrasque
JBlack Skrevet 7. november 2005 Forfatter Skrevet 7. november 2005 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.
ratix Skrevet 7. november 2005 Skrevet 7. november 2005 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
Terrasque Skrevet 11. november 2005 Skrevet 11. november 2005 Aha! Takker for den. Reagerte litt på det der selv
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå