Удаление двойных кавычек в CSV с дециметром внутри

awk -F, '{if ($2 ~/^".*"$/) $2 = substr($2, 2, length($2)-2); {gsub(/""/, "", $2);} print $2;}' sample.csv

Я выделил выше awk чтобы удалить двойные кавычки во 2-й колонке. awk отлично работал для контента ниже

sample.csv

файл "file2", file3

вывод sample.csv с выше awk

файл, file2, file3

Но awk не работает для приведенного ниже сценария

sample1.csv

файл, "фил, e2", file3

вывод sample1.txt с выше awk

файл, "фил, e2", file3

Требуемый вывод файла sample1.txt

файл, file2, file3

Я знаю, что проблема связана с разделителем запятой внутри двойных кавычек, есть ли способ пропустить это. Я хочу удалить двойные кавычки во втором столбце (источник может содержать несколько запятых (,) внутри двойных кавычек типа "fi, l, e2")

1 ответ

$ cat file
file,"file2",file3,"a,b,c","d,e"

$ awk -F'"' -v OFS= '{for (i=2;i<=NF;i+=2) gsub(/,/,"",$i)}1' file
file,file2,file3,abc,de

licensed under cc by-sa 3.0 with attribution.