Как заменить кавычки внутри поля в кавычках CSV-файла с помощью однострочной команды bash?
У меня есть файл, как это:
col1×col2×col3
12×"Some field with "quotes" inside it"×"Some field without quotes inside"
И я хотел бы заменить внутренние двойные кавычки одинарными кавычками, чтобы результат выглядел так:
col1×col2×col3
12×"Some field with 'quotes' inside it"×"Some field without quotes inside"
Я думаю, что это можно сделать с помощью sed, awk или ex, но я не смог найти простой и быстрый способ сделать это. Реальные CSV-файлы имеют порядок миллионов строк.
Предпочтительным решением будет использование одной строки с использованием вышеупомянутых программ.
Спасибо заранее!
1 ответ
Решение
Простой обходной путь с использованием sed, основанный на вашем разделителе полей ×
, может быть:
sed -E "s/([^×])\"([^×])/\1'\2/g" file
Это заменить каждый "
который предшествует и сопровождается любыми символами, кроме ×
, с '
,
Обратите внимание, что sed не поддерживает позитивный прогноз, поэтому мы должны сгруппировать и повторно вставить шаблоны.