awk und ganzes Wort mit match finden
-
- Beiträge: 76
- Registriert: 09.06.2011 03:45:35
awk und ganzes Wort mit match finden
Hallo Profis,
ich suche mit match()... einen String, allerdings will ich nur Ergebnisse bekommen, wenn der gefundene String ein vollstaendiges Wort ist.
wenn ich z.B. nach "Hans" suche, zeigt er auch "Hansmeiyer" an.
Danke euch!
ich suche mit match()... einen String, allerdings will ich nur Ergebnisse bekommen, wenn der gefundene String ein vollstaendiges Wort ist.
wenn ich z.B. nach "Hans" suche, zeigt er auch "Hansmeiyer" an.
Danke euch!
Re: awk und ganzes Wort mit match finden
Entweder die Wortanfangs und -ende Ausdruecke verwenden. In gawk: \< und \>. Oder von Hand pruefen ob davor oder danach Whitespace ist (wenn man das als Definition der Ende eines Wortes annimmt). Zudem Zeilenanfang und -ende als Sonderfaelle beachten.
Use ed once in a while!
-
- Beiträge: 76
- Registriert: 09.06.2011 03:45:35
Re: awk und ganzes Wort mit match finden
Hallo Meillo,
anscheinend kennst du dich mit awk sehr gut aus.
Ich verwende momentan match($0, suche).
muss ich total auf match verzichten?
anscheinend kennst du dich mit awk sehr gut aus.
Ich verwende momentan match($0, suche).
muss ich total auf match verzichten?
Re: awk und ganzes Wort mit match finden
Noe.rechenzentrum hat geschrieben:Ich verwende momentan match($0, suche).
muss ich total auf match verzichten?
Fuer gawk:
Code: Alles auswählen
match($0, /\<foo\>/)
Code: Alles auswählen
match($0, /(^|[ \t])foo($|[ \t])/)
Use ed once in a while!
-
- Beiträge: 76
- Registriert: 09.06.2011 03:45:35
Re: awk und ganzes Wort mit match finden
Mensch, ist das kompliziert!!!!!Meillo hat geschrieben:Noe.rechenzentrum hat geschrieben:Ich verwende momentan match($0, suche).
muss ich total auf match verzichten?
Fuer gawk:Sonst:Code: Alles auswählen
match($0, /\<foo\>/)
Code: Alles auswählen
match($0, /(^|[ \t])foo($|[ \t])/)
Ich versuche es aber mal.
Danke Dir!
Re: awk und ganzes Wort mit match finden
Ich glaube damit willst du sagen, dass du die Syntax ungewohnt findest. Ja, daran muss man sich gewoehnen.rechenzentrum hat geschrieben: Mensch, ist das kompliziert!!!!!
Use ed once in a while!
-
- Beiträge: 76
- Registriert: 09.06.2011 03:45:35
-
- Beiträge: 76
- Registriert: 09.06.2011 03:45:35
Re: awk und ganzes Wort mit match finden
Meillo hat geschrieben:Noe.rechenzentrum hat geschrieben:Ich verwende momentan match($0, suche).
muss ich total auf match verzichten?
Fuer gawk:Sonst:Code: Alles auswählen
match($0, /\<foo\>/)
Code: Alles auswählen
match($0, /(^|[ \t])foo($|[ \t])/)
Code: Alles auswählen
match($0, /\<foo\>/) foo
-
- Beiträge: 76
- Registriert: 09.06.2011 03:45:35
Re: awk und ganzes Wort mit match finden
ich arbeite nicht mir einem awk script sondern uebergebe den code per commando zeile.rechenzentrum hat geschrieben:Meillo hat geschrieben:Noe.rechenzentrum hat geschrieben:Ich verwende momentan match($0, suche).
muss ich total auf match verzichten?
Fuer gawk:Sonst:Code: Alles auswählen
match($0, /\<foo\>/)
Code: Alles auswählen
match($0, /(^|[ \t])foo($|[ \t])/)
was mache ich wenn eine Variable ist?Code: Alles auswählen
match($0, /\<foo\>/) foo
Re: awk und ganzes Wort mit match finden
Wenn was eine Variable ist? (Awk- oder Shell-Variable?)rechenzentrum hat geschrieben:was mache ich wenn eine Variable ist?Code: Alles auswählen
match($0, /\<foo\>/) foo
Das aendert grundsaetzlich mal nichts. Ob das Script in Single-Quotes oder in einer Datei liegt ist gleichbedeutend.rechenzentrum hat geschrieben: ich arbeite nicht mir einem awk script sondern uebergebe den code per commando zeile.
Poste bitte nochmal relevante Codeteile.
Use ed once in a while!
-
- Beiträge: 76
- Registriert: 09.06.2011 03:45:35
Re: awk und ganzes Wort mit match finden
Zur Zeit mache ich es so:
wenn ich nach "Hans" suche gibt er leider auch Ergebnisse zurück, wenn "Hansmeyer" in einer Zeile steht.
Ich will aber nur ein Ergebnis haben, wenn da "Hans".
was auch interessant zu wissen wäre ist, wie man, wenn eine Datei zuende gelesen wurde, wieder von vorn parsen(das hat den Zweck, dass beim Neuparsen gesammelte Informationen die meine Suche erweitert) kann.
Code: Alles auswählen
awk -v var="${i}" 'function match_is() { s=$0; \
match($0, var) ...
Ich will aber nur ein Ergebnis haben, wenn da "Hans".
was auch interessant zu wissen wäre ist, wie man, wenn eine Datei zuende gelesen wurde, wieder von vorn parsen(das hat den Zweck, dass beim Neuparsen gesammelte Informationen die meine Suche erweitert) kann.
Re: awk und ganzes Wort mit match finden
Wenn du einen gawk hast, dann kannst du es so machen:rechenzentrum hat geschrieben:Zur Zeit mache ich es so:wenn ich nach "Hans" suche gibt er leider auch Ergebnisse zurück, wenn "Hansmeyer" in einer Zeile steht.Code: Alles auswählen
awk -v var="${i}" 'function match_is() { s=$0; \ match($0, var) ...
Ich will aber nur ein Ergebnis haben, wenn da "Hans".
Code: Alles auswählen
awk -v var="\<${i}\>" 'function match_is() { s=$0; \
match($0, var) ...
Eine Shellschleife um den awk-Aufruf herum. (while : ; do awk ... ; done)was auch interessant zu wissen wäre ist, wie man, wenn eine Datei zuende gelesen wurde, wieder von vorn parsen(das hat den Zweck, dass beim Neuparsen gesammelte Informationen die meine Suche erweitert) kann.
Use ed once in a while!
-
- Beiträge: 76
- Registriert: 09.06.2011 03:45:35
Re: awk und ganzes Wort mit match finden
leider habe ich kein gawk,Meillo hat geschrieben:Wenn du einen gawk hast, dann kannst du es so machen:rechenzentrum hat geschrieben:Zur Zeit mache ich es so:wenn ich nach "Hans" suche gibt er leider auch Ergebnisse zurück, wenn "Hansmeyer" in einer Zeile steht.Code: Alles auswählen
awk -v var="${i}" 'function match_is() { s=$0; \ match($0, var) ...
Ich will aber nur ein Ergebnis haben, wenn da "Hans".Sonst musst du mal schauen welche Zeichen vor und hinter dem Namen kommen koennen. (Vielleicht ein Nicht-Wort-Zeichen oder Zeilenende/-anfang.)Code: Alles auswählen
awk -v var="\<${i}\>" 'function match_is() { s=$0; \ match($0, var) ...
Eine Shellschleife um den awk-Aufruf herum. (while : ; do awk ... ; done)was auch interessant zu wissen wäre ist, wie man, wenn eine Datei zuende gelesen wurde, wieder von vorn parsen(das hat den Zweck, dass beim Neuparsen gesammelte Informationen die meine Suche erweitert) kann.
so weit ich weiss sind die scripte nicht kompartibel.
-
- Beiträge: 76
- Registriert: 09.06.2011 03:45:35
Re: awk und ganzes Wort mit match finden
ich nehme an, dass das eine bash schleife ist. ich möchte die Schleife in awk verwirklichen.Meillo hat geschrieben:rechenzentrum hat geschrieben: Eine Shellschleife um den awk-Aufruf herum. (while : ; do awk ... ; done)
Re: awk und ganzes Wort mit match finden
Warum?rechenzentrum hat geschrieben:ich nehme an, dass das eine bash schleife ist. ich möchte die Schleife in awk verwirklichen.Meillo hat geschrieben:rechenzentrum hat geschrieben: Eine Shellschleife um den awk-Aufruf herum. (while : ; do awk ... ; done)
Dieser Wunsch widerspricht dem Design von awk.
Use ed once in a while!
-
- Beiträge: 76
- Registriert: 09.06.2011 03:45:35
Re: awk und ganzes Wort mit match finden
ich bin jetzt auf gawk umgestiegen:
funktioniert immer noch nicht.
es kommt eine Fehlermeldung: < wird als reines < intepretiert
> wird als reines > interpretiert
Code: Alles auswählen
awk -v var="\<${i}\>" 'function match_is() { s=$0; \
match($0, var) ...
es kommt eine Fehlermeldung: < wird als reines < intepretiert
> wird als reines > interpretiert
Re: awk und ganzes Wort mit match finden
So:rechenzentrum hat geschrieben:ich bin jetzt auf gawk umgestiegen:funktioniert immer noch nicht.Code: Alles auswählen
awk -v var="\<${i}\>" 'function match_is() { s=$0; \ match($0, var) ...
es kommt eine Fehlermeldung: < wird als reines < intepretiert
> wird als reines > interpretiert
Code: Alles auswählen
gawk -v "var=\\\\<$i\\\\>" '....'
Use ed once in a while!
-
- Beiträge: 76
- Registriert: 09.06.2011 03:45:35
Re: awk und ganzes Wort mit match finden
damn! Was ist dass denn?Meillo hat geschrieben:rechenzentrum hat geschrieben: So:Code: Alles auswählen
"var=\\\\<$i\\\\>"
soetwas überkandideltes habe ich ja noch nie gesehen.