Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
Duff
- Beiträge: 6321
- Registriert: 22.03.2005 14:36:03
- Wohnort: /home/duff
Beitrag
von Duff » 14.02.2008 15:03:16
Hallo,
ich möchte folgende Zeile mit 2 awk-Befehlen gerne in einen awk-Befehl umschreiben.
Doch ich bekomme es einfach nicht hin. Es wird immer das Matching auf die gesamte Datei angewand und nicht nur auf den Bereich zwischen den beiden Matchings /../,/.../.
Code: Alles auswählen
awk '/Thu Feb 14 07:00/,/^Thu Feb 14 08:00/ { print $0; }' file.txt | awk '/MATCHING/ { x++ } END {print "Summer:",x}'
Danke.
Zuletzt geändert von
Duff am 14.02.2008 15:55:56, insgesamt 1-mal geändert.
Oh, yeah!
-
Meillo
- Moderator
- Beiträge: 9254
- Registriert: 21.06.2005 14:55:06
- Wohnort: Balmora
-
Kontaktdaten:
Beitrag
von Meillo » 14.02.2008 15:47:33
Beispieldaten wären gut ... weil die meisten sowas nicht einfach aus dem Kopf beantworten können.
Use ed once in a while!
-
gms
- Beiträge: 7798
- Registriert: 26.11.2004 20:08:38
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von gms » 14.02.2008 15:48:19
Code: Alles auswählen
gms2 ~ # cat x.txt
Thu Feb 14 07:00
MATCHING 1
Thu Feb 14 08:00
MATCHING 2
gms2 ~ # awk '/Thu Feb 14 07:00/,/^Thu Feb 14 08:00/ { print $0; if ( $_ ~ /MATCHING/ ){ x++ } } END{ print "Summery:",x}' x.txt
Thu Feb 14 07:00
MATCHING 1
Thu Feb 14 08:00
Summery: 1
Gruß
gms
-
Duff
- Beiträge: 6321
- Registriert: 22.03.2005 14:36:03
- Wohnort: /home/duff
Beitrag
von Duff » 14.02.2008 15:54:57
Super, danke
gms (war ja nicht das erste Mal
)
Genau sowas habe ich gesucht. Habe es nun so gelöst, da ich bei $_ immer eine Fehlermeldung bekam.
Code: Alles auswählen
awk '/Thu Feb 14 07:00/,/^Thu Feb 14 08:00/ { if ( $1 ~ /MATCHING/ ){ x++ } } END{ print "Summery:",x}' file.txt
Oh, yeah!
-
gms
- Beiträge: 7798
- Registriert: 26.11.2004 20:08:38
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von gms » 14.02.2008 16:26:25
Duff hat geschrieben:Habe es nun so gelöst, da ich bei $_ immer eine Fehlermeldung bekam.
das mit dem $_ war ein Fehler von mir, awk verwende ich schon sehr selten.
Wenn man nicht so wie du, die Suche auf die erste Spalte beschränken möchte, könnte man auch $0 oder auch überhaupt keine Variable angeben:
Code: Alles auswählen
awk '/Thu Feb 14 07:00/,/^Thu Feb 14 08:00/ { print $0; if ( /MATCHING/ ){ x++ } } END{ print "Summery:",x}' x.txt
Gruß
gms
-
Duff
- Beiträge: 6321
- Registriert: 22.03.2005 14:36:03
- Wohnort: /home/duff
Beitrag
von Duff » 14.02.2008 16:47:41
Da hast du natürlich recht
Oh, yeah!