Ich habe eine .CSV-Datei mit 52.000 Zeilen. Jede Zeile hat 13 Spalten, die durch ein Trennzeichen '|' getrennt sind. Ungültige Daten werden in der 11. Zeile eingefügt und aufgrund dessen werden neue Zeilenzeichen in der Datei enthalten. Ich soll sie löschen.Ich muss neue Zeilenzeichen in einer CSV-Datei mit mehr als 50.000 Zeilen löschen. Benötigen Linux-Befehl.
-1
A
Antwort
1
können Sie dies versuchen;
awk -F '|' -v fields=13 '{c+=NF; s=(s?s OFS:"") $0} c>=fields{print s; s=""; c=0}' yourfile.csv
[email protected]:/tmp$cat test
1|2|3|4|5|6|7|8|9|10|11|12|13
1|2|3|4|5|6|7|8|9|10|11|12|13
1|2|3|4|5|6|7|8|9|10|11|12|13
1|2|3|4|5|6|7|8|9|10|11
|12|13
1|2|3|4|5|6|7|8|9|10|
11|12|13
[email protected]:/tmp$ awk -F"|" -v fields=13 '{f+=NF; str=(str?str OFS:"") $0} f>=fields{print str; str=""; f=0}' test
1|2|3|4|5|6|7|8|9|10|11|12|13
1|2|3|4|5|6|7|8|9|10|11|12|13
1|2|3|4|5|6|7|8|9|10|11|12|13
1|2|3|4|5|6|7|8|9|10|11 |12|13
1|2|3|4|5|6|7|8|9|10| 11|12|13
+0
In dieser Zeichenfolge ist kein Zeilenvorschubzeichen vorhanden. Probieren Sie es mit 'echo -e' aus. – Kusalananda
Hallo Kiran, willkommen zu Stackoverflow! Bitte geben Sie uns weitere Informationen - Was haben Sie bisher versucht (Code)? Dies ist eine gute Quelle, um eine gute Frage zu stellen: http://stackoverflow.com/help/how-to-ask – Jurik
Unter Linux hat jede Zeile einer Datei am Ende einen Zeilenumbruch. Können Sie genauer festlegen, welche Zeilenumbrüche Sie löschen möchten? –