Hallo,
ich habe eine Datei, in der für zwei bestimmte patterns, diese beiden Zeilen in einer Zeile ausgeben möchte.
text
Pattern1
Pattern2
weiterertext
Pattern1
Pattern2
....
soll folgende Ausgabe ergeben:
Pattern1 Pattern2
Pattern1 Pattern2
...
Habe es mal mit awk und if(/pattern1/) {variable1=$1;} und mit pattern2 versucht und dann die ausgabe mit print variable1, variable2 versucht. Funktioniert aber leider nicht.
Noch jemand ne Idee?
Zwei bestimmte Zeilen mit einander verbinden (awk) [gelöst]
Zwei bestimmte Zeilen mit einander verbinden (awk) [gelöst]
Zuletzt geändert von Duff am 27.06.2007 20:07:11, insgesamt 1-mal geändert.
Oh, yeah!
Bisher habe ich das hier:
Jedoch werden mir so nur die Zeilen in Pattern1 Pattern2 ausgegeben. Nun hätte ich aber zusätzlich auch noch die Ausgabe der anderen Zeilen, in denen kein Pattern auftaucht.
Habe es mit if und else noch nicht wirklich hinbekommen...
Code: Alles auswählen
#!/usr/bin/awk -f
/Pattern1:/ { x=$1" "$2" "$3 }
/Pattern2/ { y=$1 }
{print x," ",y;}
Habe es mit if und else noch nicht wirklich hinbekommen...
Oh, yeah!
-
- Beiträge: 44
- Registriert: 09.03.2007 19:35:09
Hallo,
wenn Pattern2 strikt auf Pattern1 folgt, dann könnte evtl. folgendes helfen:
Grüße,
justusjonas
wenn Pattern2 strikt auf Pattern1 folgt, dann könnte evtl. folgendes helfen:
Code: Alles auswählen
cat test
text
Pattern1
Pattern2
weiterertext
Pattern1
Pattern2
Code: Alles auswählen
awk '{ if (/Pattern1/) { ORS="" ; print $1 " " } else { ORS="\n" ; print $1 } }' test
text
Pattern1 Pattern2
weiterertext
Pattern1 Pattern2
justusjonas
Ja danke.
Genau sowas war es, was ich gesucht hatte.
OFS = output field separator
ORS = output record separator
...immer wieder die eingebauten Variablen in awk, die man (zumindestens ich) immer wieder vergesse. Danke.
[edit]
oder noch was kürzer:
[/edit]
Genau sowas war es, was ich gesucht hatte.
OFS = output field separator
ORS = output record separator
...immer wieder die eingebauten Variablen in awk, die man (zumindestens ich) immer wieder vergesse. Danke.
[edit]
oder noch was kürzer:
Code: Alles auswählen
awk '{ ORS=/Pattern/ ? "" : "\n" } {print;}' file
Oh, yeah!