Regex und sed
Hallo zusammen! Bitte um eure Hilfe bei einer Textmanipulation in der bash shell. Ich versuche seit Stunden vergeblich via regex und sed aus
diesen Text zu generieren
Danke fürs lesen und eure kreativen Ideen ;)
Kostenstelle;AAAAAA
0677/1111111;-9,58;0,00;0,00;2,91;0,00;-6,67;0,00;0,00
Kostenstelle;BBBBBB
0677/2222222;-12,19;0,00;0,00;2,91;0,00;-9,28;0,00;0,00
diesen Text zu generieren
AAAAAA;0677/1111111;-9,58;0,00;0,00;2,91;0,00;-6,67;0,00;0,00
BBBBBB;0677/2222222;-12,19;0,00;0,00;2,91;0,00;-9,28;0,00;0,00
Danke fürs lesen und eure kreativen Ideen ;)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 771222606
Url: https://administrator.de/forum/regex-und-sed-771222606.html
Ausgedruckt am: 09.04.2025 um 22:04 Uhr
6 Kommentare
Neuester Kommentar
Also - du willst am ende nur wenn eine Zeile _NICHT_ mit 0-9 anfängt am Ende das Return entfernen?
Oder sind die Beispiele einfach nur schlecht gewählt? Weil letzteres dürfte nich soo schwer sein (mit ner if-abfrage - einfach zeilenweise durch die Datei durchgehen, wenn erfüllt am ende das Return entfernen).
Oder sind die Beispiele einfach nur schlecht gewählt? Weil letzteres dürfte nich soo schwer sein (mit ner if-abfrage - einfach zeilenweise durch die Datei durchgehen, wenn erfüllt am ende das Return entfernen).
Mal ein wenig rumgespielt:
Das folgende Script liest aus "test.txt" (deiner Ausgangsdatei) und schmeißt "test3.txt" am Ende raus:
Das sed ersetzt "Kostenstelle;" (mit dem Semikolon!) mit nichts, im gesamten file, und speichert es zwischen in test2.txt
Darin steht Folgendes:
test2.txt wird nun als Input für "paste" genommen.
"-" ist hier der Input, und durch das zweimalige Verwenden "- -" werden eben immer zwei Zeilen genommen, aneinander gehängt und durch den Separator ";" getrennt.
Der Output (also jew. 2 Zeilen, die nun in einer zusammengefasst sind) kommt dann in test3.txt:
Es fällt mir ein wenig schwer, den paste-Teil richtig zu erklären.. aber er ist auch schamlos geklaut :D
https://stackoverflow.com/questions/9605232/how-to-merge-every-two-lines ...
Das folgende Script liest aus "test.txt" (deiner Ausgangsdatei) und schmeißt "test3.txt" am Ende raus:
#!/bin/bash
sed 's/Kostenstelle;//g' test.txt > test2.txt
paste -d ";" - - < test2.txt > test3.txt
Das sed ersetzt "Kostenstelle;" (mit dem Semikolon!) mit nichts, im gesamten file, und speichert es zwischen in test2.txt
Darin steht Folgendes:
AAAAAA
0677/1111111;-9,58;0,00;0,00;2,91;0,00;-6,67;0,00;0,00
BBBBBB
0677/2222222;-12,19;0,00;0,00;2,91;0,00;-9,28;0,00;0,00
test2.txt wird nun als Input für "paste" genommen.
"-" ist hier der Input, und durch das zweimalige Verwenden "- -" werden eben immer zwei Zeilen genommen, aneinander gehängt und durch den Separator ";" getrennt.
Der Output (also jew. 2 Zeilen, die nun in einer zusammengefasst sind) kommt dann in test3.txt:
AAAAAA;0677/1111111;-9,58;0,00;0,00;2,91;0,00;-6,67;0,00;0,00
BBBBBB;0677/2222222;-12,19;0,00;0,00;2,91;0,00;-9,28;0,00;0,00
Es fällt mir ein wenig schwer, den paste-Teil richtig zu erklären.. aber er ist auch schamlos geklaut :D
https://stackoverflow.com/questions/9605232/how-to-merge-every-two-lines ...