Hallo,
ich zerbreche mir gerade den Kopf über ein kleines Problem -und ich bin nicht wirklich zufrieden mit meiner "Lösung" Evtl. kann mich ja jemand auf die richtige Spur bringen.
Ich habe eine Datei in der die Zeilen wie folgt aufgebaut sind:
ABC1239;Testuser Eins, 2345, OLP, TRIGGER, FG, 1234, ABC1239;Testuser Eins, 2345, OLP, HURRA, FG, 1234, TZU4679;Cluever Bernd, 3333, IKO, HILP, SD, 3312, IOI4679;Werner Wernere, 7655, OPL, UIOLP, EW, 2222, IOI4679;Werner Wernere, 7677, LOP, TRIGGER, 12,9876,
Mein Ziel definiert sich folgendermassen:
Finde das Wort "TRIGGER" Merke Dir den ersten Ausdruck dieser Zeile bis zum Semikolon (Also so etwa: /^.*\;/ ) Schau in die nächste Zeile und WENN der erste Audruck übeinstimmt dann lösche die zweite Zeile.
Meine Lösung soweit (ohne die überprüfung ob der erste Parameter der gleiche ist):
1 2 3 4 | sort komplett1 | sed '/TRIGGER/{ N s/\n.*$// }' |
Ergebnis soll sein:
ABC1239;Testuser Eins, 2345, OLP, TRIGGER, FG, 1234, TZU4679;Cluever Bernd, 3333, IKO, HILP, SD, 3312, IOI4679;Werner Wernere, 7677, LOP, TRIGGER, 12,9876,
Ich hoffe, das ist verständlich Die Zeilen sind immer gleich aufgbaut - WORT;Wort Wort, Nummer, Wort, Wort, Wort, Nummer,
Anders ausgedrückt: Bei Zeilen die mit dem gleichen Wort beginnen wirf die Zeile weg, die NICHT das Wort "TRIGGER" enthält (so hört sich das eigentlich richtig gut an ☺ )
Ich habe auch mit awk und
awk -F"," '$4 ~ /TRIGGER/ {....
aber da komme ich gar nicht weiter.
Multiline Pattern geht mir im Moment völlig ab.
Mit meiner rudimentären Lösung (solange das sortieren noch korrekt klappt) kann ich zwar leben, da ich die Datei vorher sortiere und sicher sein kann, dass die zeilen dann auch doppelt enthalten sind; aber mein Wunsch wäre eine Lösung bei der der Abgleich auf den ersten Parameter der Zeile stattfindet UND (wenn möglich) das ganze auch funktioniert wenn "TRIGGER" in der Zeile dahinter steht!
Jede Hilfe ist willkommen ☺
Ich kann aber nur awk und sed einsetzen - kein python, perl oder ähnliches.