Einfachster Ansatz:
tr -d '"' <a.csv >b.csv
Verwenden Sie gsub()
Funktion zur globalen Substitution
$ awk '{gsub(/\"/,"")};1' input.csv
1,2,3,4,9
1,2,3,6,24
1,2,6,8,28
1,2,4,6,30
Um die Ausgabe an eine neue Datei zu senden, verwenden Sie >
Shell-Operator:
awk '{gsub(/\"/,"")};1' input.csv > output.csv
Ihr Splitting-to-Array-Ansatz kann auch verwendet werden, obwohl es nicht notwendig ist, aber Sie können es so verwenden:
$ awk '{split($0,a,"\""); print a[2]}' input.cvs
1,2,3,4,9
1,2,3,6,24
1,2,6,8,28
1,2,4,6,30
Beachten Sie, dass in dieser speziellen Frage das allgemeine Muster darin besteht, dass Anführungszeichen am Anfang und am Ende der Zeile stehen, was bedeutet, dass wir dies auch als Feldtrennzeichen behandeln können, wobei Feld 1 null ist, Feld 2 ist 1,2,3,4
, und Feld 3 ist ebenfalls null. Somit können wir Folgendes tun:
awk -F '\"' '{print $2}' input.csv
Und wir können auch Teilstrings der ganzen Zeile herausnehmen:
awk '{print substr($0,2,length($0)-2)}' quoted.csv
Apropos Entfernen des ersten und letzten Zeichens, es gibt einen ganzen Post auf Stackoverflow darüber mit anderen Tools wie sed
und POSIX-Shell.
Eine andere Lösung mit sed
:
sed -e 's/"//g' a.csv > b.csv