Ich habe eine CSV-Datei mit dem folgenden Format:
"column 1","column 2","column 3","column 4","column 5","column 6","column 7","column 8","column 9","column 10
"12310","42324564756","a simple string with a , comma","string with or, without commas","string 1","USD","12","70%","08/01/2013",""
"23455","12312255564","string, with, multiple, commas","string with or, without commas","string 2","USD","433","70%","07/15/2013",""
"23525","74535243123","string , with commas, and - hypens and: semicolans","string with or, without commas","string 1","CAND","744","70%","05/06/2013",""
"46476","15467534544","lengthy string, with commas, multiple: colans","string with or, without commas","string 2","CAND","388","70%","09/21/2013",""
5. Spalte der Datei hat verschiedene Zeichenfolgen. Ich muss die Datei basierend auf dem Wert der 5. Spalte herausfiltern. Nehmen wir an, ich benötige eine neue Datei aus der aktuellen Datei, die nur Datensätze mit dem Wert "string 1" im fünften Feld enthält.
Dazu habe ich den folgenden Befehl ausprobiert:
awk -F"," ' { if toupper($5) == "STRING 1") PRINT }' file1.csv > file2.csv
aber es warf mir einen Fehler wie folgt:
awk: { if toupper($5) == "STRING 1") PRINT }
awk: ^ syntax error
awk: { if toupper($5) == "STRING 1") PRINT }
awk: ^ syntax error
Ich habe dann die folgenden verwendet, die mir eine ungerade Ausgabe gibt.
awk -F"," '$5="string 1" {print}' file1.csv > file2.csv
Ausgabe:
"column 1" "column 2" "column 3" "column 4" string 1 "column 6" "column 7" "column 8" "column 9" "column 10
"12310" "42324564756" "a simple string with a comma" string 1 without commas" "string 1" "USD" "12" "70%" "08/01/2013" ""
"23455" "12312255564" "string with string 1 commas" "string with or without commas" "string 2" "USD" "433" "70%" "07/15/2013" ""
"23525" "74535243123" "string with commas string 1 "string with or without commas" "string 1" "CAND" "744" "70%" "05/06/2013" ""
"46476" "15467534544" "lengthy string with commas string 1 "string with or without commas" "string 2" "CAND" "388" "70%" "09/21/2013" ""
PS: Ich habe den Befehl toupper verwendet, um auf der sicheren Seite zu sein, da ich nicht sicher bin, ob die Zeichenfolge in Groß- oder Kleinschreibung geschrieben wird. Ich muss wissen, was mit meinem Code nicht stimmt und ob das Leerzeichen in der Zeichenfolge wichtig ist, wenn ich mit AWK nach einem Muster suche.
'","'
als Trennzeichen zu machen, sonst hätte es mein Problem gelöst ... großartige Lösung ...