Nejjednodušší přístup:
tr -d '"' <a.csv >b.csv
Použijte gsub()
funkce pro globální substituci
$ 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
Pro odeslání výstupu do nového souboru použijte >
operátor shellu:
awk '{gsub(/\"/,"")};1' input.csv > output.csv
Můžete také použít váš přístup rozdělení na pole, i když to není nutné, ale můžete jej použít takto:
$ 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
Všimněte si, že v této konkrétní otázce je obecný vzorec takový, že uvozovky jsou na začátku a na konci řádku, což znamená, že to také můžeme považovat za oddělovač polí, kde pole 1 je nulové, pole 2 je 1,2,3,4
a pole 3 je také nulové. Můžeme tedy udělat:
awk -F '\"' '{print $2}' input.csv
A také můžeme vyjmout podřetězec celého řádku:
awk '{print substr($0,2,length($0)-2)}' quoted.csv
Když už mluvíme o odstranění prvního a posledního znaku, o tom je celý příspěvek na stackoverflow s dalšími nástroji, jako je sed
a POSIX shell.
Další řešení s sed
:
sed -e 's/"//g' a.csv > b.csv
Proč se telefonní čísla systému Linux v x86 a x86_64 liší?
Nahrazení podtržítka čárkou a odstranění dvojitých uvozovek v CSV