egrep zwei gleiche wörter suchen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
penthesilea
Beiträge: 147
Registriert: 19.02.2003 23:51:24
Wohnort: Ulm

egrep zwei gleiche wörter suchen

Beitrag von penthesilea » 17.04.2005 16:24:22

Hallo Leuts,

ich habe ein Problem, ich soll mittels egrep zwei gleiche Wörter in einer Zeile einer Datei finden.
Ich versteh gar nicht wie das funkionieren soll, da ich das mit einem regulären Ausdruck gar nicht machen kann. egrep kann ja scheinbar erweiterte reguläre Ausdrücke. Aber was sind erweiterte reguläre Ausdrücke?.
hmm und die manpage hilft mir da auch nicht weiter.

Vielen Dank schonmal im vorraus,
penthesilea

Benutzeravatar
jack herer
Beiträge: 94
Registriert: 28.07.2003 19:48:17

Beitrag von jack herer » 17.04.2005 17:11:28

Probiers mal hiermit:

Code: Alles auswählen

egrep ".*\w(.+)\w.*\w\1\w.*"

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 17.04.2005 17:17:18

Hallo penthesilea,
reicht Dir das "Handbuch.txt" Beispiel aus http://www.linux-ag.de/linux/LHB/node46.html ,
oder ist es viel komplizierter gemeint?

Gruss fuzzy

Benutzeravatar
jack herer
Beiträge: 94
Registriert: 28.07.2003 19:48:17

Beitrag von jack herer » 17.04.2005 17:27:46

Hmmh, oder eher so:

Code: Alles auswählen

egrep ".*\b(\w+)\b.*\1.*"
:oops:

Benutzeravatar
penthesilea
Beiträge: 147
Registriert: 19.02.2003 23:51:24
Wohnort: Ulm

Beitrag von penthesilea » 17.04.2005 17:58:16

Hallo,
also das Beispiel Handbuch.tex das ist nicht was ich suche. Ich brauch etwas das mir 2 gleiche Wörter findet und zwar egal welche.
Und das von jack herer funkioniert leider auch nicht. Soweit ich es verstanden habe, gibt es alle Zeilen aus, welche 2 wörter haben aber halt nicht die, welche 2 gleiche Wörter haben.

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 17.04.2005 18:06:50

Hallo penthesilea,
ich glaube das Beispiel von "jack herer" ist das was Du suchst...

Code: Alles auswählen

fuzzy@sid:/tmp$ cat foo 

abc def ghi
foo debian foo 
1 2 3 4 5 6 7
beispiel test egrep

fuzzy@sid:/tmp$ egrep ".*\b(\w+)\b.*\1.*" foo
foo debian foo 
Gruß fuzzy

Benutzeravatar
jack herer
Beiträge: 94
Registriert: 28.07.2003 19:48:17

Beitrag von jack herer » 17.04.2005 18:09:50

Hallo,

eigentlich sollte es funktionieren. OK, korrekterweise müßten ".*" vor und nach \1 durch \b ersetzt werden, also so:

Code: Alles auswählen

egrep ".*\b(\w+)\b.*\b\1\b"
Was der Ausdruck sucht ist folgendes:
".*" = Beliebiges Zeichen 0 oder mehrmals
"\b" = Wortgrenze
(\w+) = alphanumerische Zeichen, ein oder mehrmals. Geklammert zum Zwischenspeichern
\1 = den zwischengespeicherten Wert nochmal finden.

Was funktioniert daran nicht?

Benutzeravatar
penthesilea
Beiträge: 147
Registriert: 19.02.2003 23:51:24
Wohnort: Ulm

Beitrag von penthesilea » 17.04.2005 19:26:04

Vielen lieben Dank, das funkioniert jetzt.
Ich weiss auch nicht wieso, das vorher nicht getan hat.

Gruss penthesilea

Antworten