rurotil
Anmeldungsdatum: 7. April 2009
Beiträge: 102
|
Hallo Zusammen, wie kann ich mit sed und awk diese CSV Datei so gestalten, dass ich die Überschrift in Zeile 1 umbennen kann und gleichzeitig Spalte 5 zu Spalte 6 machen, Spalte 1 zu Spalte 10 und Spalte 2 löschen. ID;Reference;EAN;Hersteller;Price_B2B;Price_B2B_Angebot;Price_B2B_Prozent;Price_B2B_Discount;Price_B2C_ohneSteuer;Price_B2C_mitSteuer;STEUERSATZ;LAND;Währung;PREIS
111;111;;TEST;1,5;1,5;0;0;;2;19;DE;EUR;1,8
222;222;;TEST;8,29;5,5;0;0;10,08;12;19;DE;EUR;10,8
333;333;;TEST;1,45;1,45;0;0;1,69;2,01;19;DE;EUR;1,69
|
Doc_Symbiosis
Anmeldungsdatum: 11. Oktober 2006
Beiträge: 4378
Wohnort: Göttingen
|
So wäre ein erster Ansatz. Mit dem Umbennen der Überschrift habe ich nicht ganz verstanden:
awk -F';' 'BEGIN {print "Neue Kopfzeile"} ; NR>1 {print $10";"$3";"$4";"$6";"$5";"$7";"$8";"$9";"$1";"$11""}' test.csv
|
rurotil
(Themenstarter)
Anmeldungsdatum: 7. April 2009
Beiträge: 102
|
Danke erstmal ☺
mit dem Umbennen meinte ich Spalte für Spalte aus
ID;Reference;EAN;Hersteller;Price_B2B;Price_B2B_Angebot; soll werden
ID Nummer;Nummer;Hersteller Nummer;Hersteller;Price;Price_Angebot;
|
rurotil
(Themenstarter)
Anmeldungsdatum: 7. April 2009
Beiträge: 102
|
Doc_Symbiosis schrieb: So wäre ein erster Ansatz. Mit dem Umbennen der Überschrift habe ich nicht ganz verstanden:
awk -F';' 'BEGIN {print "Neue Kopfzeile"} ; NR>1 {print $10";"$3";"$4";"$6";"$5";"$7";"$8";"$9";"$1";"$11""}' test.csv
Heißt das Spalte 10 wird zu 3 und Spalte 4 wird zu 6? oder Wir hier Spalte 1 zu 10 und Spalte 2 zu 3?
|
Doc_Symbiosis
Anmeldungsdatum: 11. Oktober 2006
Beiträge: 4378
Wohnort: Göttingen
|
Naja, die Spalten kommen jetzt einfach in der Reihenfolge, wie ich sie gelistet habe. Da sollte das Ergebnis so rauskommen, wie Du es beschrieben hattest, denke ich. Probier es doch einfach aus, ob das Ergebnis so mit dem übereinstimmt, was Dir vorschwebte.
|
rurotil
(Themenstarter)
Anmeldungsdatum: 7. April 2009
Beiträge: 102
|
Ja danke, das Sortieren scheint zu funktionieren.
Allerdings steht nun in der 1. Zeile nur Kopfzeile. Da müsste man jetzt Spalte für Spalte umbennen, wir ich vorher das Beispiel geschiltert habe.
|
Doc_Symbiosis
Anmeldungsdatum: 11. Oktober 2006
Beiträge: 4378
Wohnort: Göttingen
|
Naja, schreibe da doch einfach die neue Kopfzeile rein wie sie sein soll.
|
rurotil
(Themenstarter)
Anmeldungsdatum: 7. April 2009
Beiträge: 102
|
Dann habe ich aber nur eine Überschrift, ich möchte ja Überschrift1 und Überschrift2 umbennenen, usw.
|
Doc_Symbiosis
Anmeldungsdatum: 11. Oktober 2006
Beiträge: 4378
Wohnort: Göttingen
|
Na, also schreibe doch die gesamte Kopfzeile in die BEGIN Anweisung. Ich weiß nicht, was man da großartig programmieren sollte.
|
rurotil
(Themenstarter)
Anmeldungsdatum: 7. April 2009
Beiträge: 102
|
Achso, sorry das hatte ich nicht verstanden. Hat jetzt funktioniert, vielen Dank ☺ Die Zeilen 2-x haben als Trennung ", das bekomme ich in der ersten Zeile nicht hin. So gehts mal nicht: awk -F';' 'BEGIN {print '"111";"222";"222";"333";"444";"555";"666"'} ; NR>1 {print $10";"$3";"$4";"$6";"$5";"$7";"$8";"$9";"$1";"$11""}' 2022-07_Cloud.csv > neu.csv
|
Doc_Symbiosis
Anmeldungsdatum: 11. Oktober 2006
Beiträge: 4378
Wohnort: Göttingen
|
Na, Du musst auf das Quoting aufpassen (single Quotes solltest Du innerhalb der Statements nicht verwenden und die Semikolons müssen aber innerhalb der Quotes sein): awk -F';' 'BEGIN {print "111;222;222;333;444;555;666"} ; NR>1 {print $10";"$3";"$4";"$6";"$5";"$7";"$8";"$9";"$1";"$11""}' 2022-07_Cloud.csv > neu.csv
|
rurotil
(Themenstarter)
Anmeldungsdatum: 7. April 2009
Beiträge: 102
|
So ist das Ergebnis aber so 111;222;222;333;444;555;666
"70111";"Name";"10122";"B2000056";"20.06.2017 10:35:39";"Business";"Office" In der ersten Zeile fehlt nun " pro Spalte.
|
Doc_Symbiosis
Anmeldungsdatum: 11. Oktober 2006
Beiträge: 4378
Wohnort: Göttingen
|
Achso, Du willst Double-Quotes drin haben, davon stand in deinem Beispiel nichts. Dann halt so:
print "\"111\";\"222\";\"222\";\"333\";\"444\";\"555\";\"666\""
|
rurotil
(Themenstarter)
Anmeldungsdatum: 7. April 2009
Beiträge: 102
|
Ja danke, das war die Lösung, nun funktioniert alles so wie ich es wollte. vielen Dank nochmals
|
rurotil
(Themenstarter)
Anmeldungsdatum: 7. April 2009
Beiträge: 102
|
Hallo Leute, erstmal danke für die Hilfe. Aber geht es auch einfacher wie: awk -F';' 'BEGIN {print "\"111\";\"222\";\"222\";\"333\";\"444\";\"555\";\"666\""} ; NR>1 {print $10";"$3";"$4";"$6";"$5";"$7";"$8";"$9";"$1";"$11""}' test.csv Ich würde gerne die Überschriften usw. einfach nur reinkopieren oder einfach Spalte1,Spalte2,Spalt3 usw. ohne " schreiben.
|