Zeile vor und nach match editieren

X

xelra

Jungspund
Hallo,

ich habe ein kleines Problem ei dem ich nicht weiterkomme. Ich habe eine Textdatei welche ich gerne mit awk editieren moechte. Ein Ausschnitt davon sieht so aus:

Code:
...
BPMIV.28504,
DRIFT_39,
MCIAV.28504,
[COLOR="red"]DRIFT_86,
MQIS.SkewQuad1,
DRIFT_87,[/COLOR]
BEGMATCHLHC,
MQIF.28600,
...

Gematcht werden soll auf MQIS.SkewQuad1. Der DRIFT_86 und DRIFT_87 davor und dahinter sollen sich veraendern, so damit das ganze so aussieht:

Code:
...
BPMIV.28504,
DRIFT_39,
MCIAV.28504,
[COLOR="red"]DRIFT_SkewQuad1.IN,
MQIS.SkewQuad1,
DRIFT_SkewQuad1.OUT,[/COLOR]
BEGMATCHLHC,
MQIF.28600,
...

Das Dahinter habe ich mit awk hinbekommen mit folgendem code:
Code:
{ print > "Test" }
/MQIS/ {getline tmp ; sub(/MQIS./, "") ; sub(/,$/, "") ; printf "DRIFT_%s.OUT,\n", $0 > "Test"}

Beim Davor beisse ich mir allerdings seit 20 Std. die Zaehne aus. Ich habe es auch mit getline versuch, nur dass ich eben mit getline in eine variable lade und diese dann matche. Aber irgendwie verschwinden dann Zeilen.

Ich hoffe mir kann jemand weiterhelfen.

Vielen Dank schonmal im Voraus.
 
hmm
nur so ein tipp:
ich würde das eher mit sed lösen, du kannst ja als adressierungs-ranges reguläre expressions angeben funktioniert auch mit nicht. und dann anschliend substituieren.

das nur als hinweis. wenn ich lange weile habe, löse ich auch noch dein problem und schreib hier rein sobald ich dir lösung habe.
 
Hallo,

es ist zwar noch nicht genau die loesung zu meinem Problem, aber ich bin mir ziemlich sicher, dass es sich wie in dem Link beschrieben mit Arrays loesen laesst.

Vielen Dank fuer den Tipp.
 
Zurück
Oben