[gelöst] awk matchings vereinen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

[gelöst] awk matchings vereinen

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!

Benutzeravatar
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

Benutzeravatar
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

Benutzeravatar
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 :idea:
Oh, yeah!

Antworten