Eine Datei mit folgendem Inhalt haben:
1111,2222,3333,4444
aaaa,bbbb,cccc,dddd
Ich versuche, eine Datei zu erhalten, die der Originaldatei entspricht, aber keine n-te Spalte wie für n = 2 (oder 3) hat.
1111,2222,4444
aaaa,bbbb,dddd
oder, für n = 0 (oder kann es 1 sein)
2222,3333,4444
bbbb,cccc,dddd
Eine echte Datei kann Gigabyte lang sein und zehntausende Spalten haben.
Wie immer in solchen Fällen vermute ich, dass Kommandozeilenmagier eine elegante Lösung anbieten können ... :-)
In meinem eigentlichen Fall muss ich 2 erste Spalten löschen, was durch zweimaliges Löschen einer ersten Spalte in einer Sequenz geschehen kann, aber ich nehme an, es wäre interessanter, ein wenig zu verallgemeinern.
text-processing
Ivan
quelle
quelle
,
? (Dh,,
wird immer nur als Feldtrennzeichen verwendet.),
und kommt nie innerhalb eines Feldes vor.Antworten:
Ich glaube, das ist spezifisch, um aus den GNU-Coreutils zu schneiden:
Normalerweise geben Sie die gewünschten Felder mit -f an, aber durch Hinzufügen von --complement kehren Sie natürlich die Bedeutung um. Aus "Mann geschnitten":
Eine Einschränkung: Wenn eine der Spalten ein Komma enthält, wird der Wert abgeschnitten, da cut kein CSV-Parser ist, wie es eine Kalkulationstabelle ist. Viele Parser haben unterschiedliche Vorstellungen zum Umgang mit Kommas in CSV. Für den einfachen CSV-Fall ist cut in der Befehlszeile immer noch der richtige Weg.
quelle
cut
da es sich nicht um einen CSV-Parser handelt. Wenn ein CSV-Feld ein Feldtrennzeichen enthält, wird es in Anführungszeichen gesetzt. Übrigens, zum Themacut
,-f
nimmt Feldbereiche.cut -f, -d3-
gibt das dritte Feld an aus und entfernt die ersten beiden.cut -d, -f3-
Wenn die Daten einfach aus durch Kommas getrennten Spalten bestehen:
Sie können auch awk verwenden, dies ist jedoch etwas umständlich, da das Entfernen des Trennzeichens einige Arbeit kostet, während das Löschen eines Feldes einfach ist. Wenn Sie kein leeres Feld haben, ist es nicht so schlimm:
Wenn Sie eine tatsächliche CSV-Datei haben, in der Kommas in Feldern angezeigt werden können, benötigen Sie eine echte CSV-Bibliothek .
quelle