Enfoque más simple:
tr -d '"' <a.csv >b.csv
Usa gsub()
función para sustitución global
$ 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
Para enviar la salida a un nuevo archivo, use >
operador de shell:
awk '{gsub(/\"/,"")};1' input.csv > output.csv
También se puede usar su enfoque de división en matriz, aunque no es necesario, pero puede usarlo así:
$ 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
Tenga en cuenta que en esta pregunta en particular, el patrón general es que las comillas están al principio y al final de la línea, lo que significa que también podemos tratarlo como un separador de campo, donde el campo 1 es nulo, el campo 2 es 1,2,3,4
y el campo 3 también es nulo. Así, podemos hacer:
awk -F '\"' '{print $2}' input.csv
Y también podemos sacar una subcadena de toda la línea:
awk '{print substr($0,2,length($0)-2)}' quoted.csv
Hablando de eliminar el primer y el último carácter, hay una publicación completa en stackoverflow sobre eso con otras herramientas como sed
y shell POSIX.
Otra solución con sed
:
sed -e 's/"//g' a.csv > b.csv