AWK zum Filtern von CSV-Dateien

8

Ich möchte die Zeilen filtern, die "auch" in der 3. Spalte stehen. Der Befehl ist wie folgt

%Vor%

Aber die Datei CSV2.csv enthält immer noch das Wort "synonym" in der 3. Spalte. Ich frage mich, was könnte falsch sein?

Zwei Zeilen von der Datei CSV.csv:

%Vor%     
TonyGW 31.10.2013, 16:19
quelle

2 Antworten

9

Wenn Ihre Datei CSV.csv Spalten hat, die durch , getrennt sind, müssen Sie

%Vor%

Wenn -F nicht mit Ihrer Version von awk funktioniert, versuchen Sie

%Vor%

BEARBEITEN : Sie müssen auch " berücksichtigen, also verwenden Sie /^"synonymous/

    
rzymek 31.10.2013, 16:22
quelle
2

Um csv-Datei mit awk zu verarbeiten, würde ich die folgende Methode bevorzugen, um automatisch Anführungszeichen zu berücksichtigen, nämlich preprocess mit sed.

Für Ihre konkrete Frage würde ich

verwenden %Vor%

Wenn Sie auch Dateien mit Zeichenfolgenfeldern, die Anführungszeichen enthalten (die in csv-Dateien durch doppelte Anführungszeichen dargestellt werden), korrekt verarbeiten möchten, müssen Sie den sed-Ausdruck wie folgt ändern:

%Vor%

Diese Methode hat den Vorteil, dass Sie einige Felder mit awk korrekt drucken oder bearbeiten können. Wenn Sie zum Beispiel das erste und fünfte Feld aus den gefilterten Zeilen drucken möchten, getrennt durch : , können Sie jetzt

verwenden %Vor%

(Wenn Ihnen der Unterschied zwischen den Methoden nicht klar ist, können Sie den letzten awk-Befehl ohne sed-Vorverarbeitung ausprobieren)

    
alphanum 04.06.2014 09:03
quelle

Tags und Links