• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[SOLVED] Mit sed Gruppenwechsel im File erkennen

Hallo Forum!

Ich habe folgendes Problem mit einem csv File und einem darin enthaltenen Gruppenwechsel!
Ich muss den Gruppenwechsel erkennen ( lässt sich anhand der jeweiligen Überschrift erkennen ) und soll dann den Inhalt zwischen den beiden Überschriften ausgeben und weiterverarbeiten.

Ich habe es mit sed soweit gebracht, dass ich die ersten beiden Gruppenwechsel schaffe, aber nur beim letzten druckt er mir dann plötzlich den kompletten Inhalt des Files wieder an!

So sieht mein Entwurf bis jetzt aus:

Code:
1ste Überschrift:

sed -ne '/RICNAME,PERIOD1,PERIOD2,CCY1,GEN_VAL1,GEN_VAL2/,/RICNAME,PERIOD1,PERIOD2,CCY1,GN_TX_20_1/p' File.csv

2te Überschrift:

sed -ne '/RICNAME,PERIOD1,PERIOD2,CCY1,GN_TX_20_1/,/RICNAME,PERIOD1,PERIOD2,CCY1,GEN_VAL1/p' File.csv

3te Überschrift:

sed '/RICNAME,PERIOD1,PERIOD2,CCY1,GEN_VAL1/,//d' File.csv

Der Inhalt des Files sieht so aus:

Code:
RICNAME,PERIOD1,PERIOD2,CCY1,GEN_VAL1,GEN_VAL2
CO1SOEUR11001Y,110,01Y,EUR,46.0,126.5
CO1SOEUR11002Y,110,02Y,EUR,57.8,102.3
RICNAME,PERIOD1,PERIOD2,CCY1,GN_TX_20_1
COCACEUR10501Y,105,01Y,EUR,0.778
COCACEUR10505Y,105,05Y,EUR,0.890
RICNAME,PERIOD1,PERIOD2,CCY1,GEN_VAL1
COSOCEUR21001YSP1,210,01Y,EUR,14.3
COSOCEUR21001YSP3,210,01Y,EUR,26.9

Bis zu der 2ten Überschrift gibt er mir nur den jeweiligen Inhalt zwischen den Überschriften aus, aber bei der letzten Überschrift druckt er wie gesagt das ganze File dann an!

Vll. kann mir jemand beim sed Befehl helfen, damit ich nur die Zeilen zwischen den Überschriften bekomme?
Danke schon vielmals im vorhinein!
 
A

Anonymous

Gast
Das Komplizierteste dabei ist erstmal zu erkennen was da für eine Bösewilligkeit verborgen ist.
Und zwar ist in deinen Testdaten die Überschrift 3 ein Bestandteil der Überschrift 1 ;)
Das wird das Problem sein, an dem du Verzeifelst, da die Regulären Ausdrücke dann bei dir nicht eindeutig sind und somit falsche Ergebnisse kommen, obwohl es eigentlich richtig aussieht.

Überhaupt ist das ziemlich verworren mit diesen Überschriften.
Ich würde das Wirrwar der Überschriften etwas über Shellvariablen vereinfachen, bzw erstmal mit einfachen Testdaten entwickeln, sonst verliert man hier sehr schnell den Überblick.

hier mal der Konsolausdruck bei der "Vereinfachung" ;) über Shellvariablen.

Code:
robi@LINUX : HEAD="RICNAME,PERIOD1,PERIOD2,CCY1,"
robi@LINUX : EXT1="GEN_VAL1,GEN_VAL2"
robi@LINUX : EXT2="GN_TX_20_1"
robi@LINUX : EXT3="GEN_VAL1"

robi@LINUX : sed  -e '/'$HEAD'/i\\n' test.file  | sed -ne '/'$HEAD''$EXT1'$/,/^$/p'
RICNAME,PERIOD1,PERIOD2,CCY1,GEN_VAL1,GEN_VAL2
CO1SOEUR11001Y,110,01Y,EUR,46.0,126.5
CO1SOEUR11002Y,110,02Y,EUR,57.8,102.3

robi@LINUX : sed  -e '/'$HEAD'/i\\n' test.file  | sed -ne '/'$HEAD''$EXT2'$/,/^$/p'
RICNAME,PERIOD1,PERIOD2,CCY1,GN_TX_20_1
COCACEUR10501Y,105,01Y,EUR,0.778
COCACEUR10505Y,105,05Y,EUR,0.890

robi@LINUX : sed  -e '/'$HEAD'/i\\n' test.file  | sed -ne '/'$HEAD''$EXT3'$/,/^$/p'
RICNAME,PERIOD1,PERIOD2,CCY1,GEN_VAL1
COSOCEUR21001YSP1,210,01Y,EUR,14.3
COSOCEUR21001YSP3,210,01Y,EUR,26.9

robi
 
Hallo!

Sorry für die verspätete Antwort!
Danke Dir vielmals für Deine Hilfe!

Funktioniert jetzt alles soweit bestens!

Bernd
 
Oben