(sed) Удалите запятую между любыми двумя числами внутри двойных кавычек (но сохраните число)

#csv #sed #comma

#csv #sed

Вопрос:

Мне нужно очистить CSV, в котором перечислены некоторые числа. Для 4 и более цифр это дает число в двойных кавычках с запятой. Мне нужно удалить этот тип запятой.

Пока я получил это:

sed 's/"[0-9]*,[0-9]*"/"idk"/g'

Который успешно идентифицирует запятую, которую я ищу, отдельно от других запятых.

 example,134,"idk",0.91%,8.0
example,96,"idk",2.62%,6.9
example,89,367,3.68%,5.8
 

Как мне сообщить sed, что мне нужно только удалить запятую из запроса соответствия?

Редактировать: Извините, ожидаемый результат — просто удалить запятую.

в: example,89,"1,456",3.68%,5.8

out: example,89,"1456",3.68%,5.8

Комментарии:

1. Вы ищете sed 's/("[0-9]*),([0-9]*")/12/g' ? (Нет необходимости использовать обратную косую черту запятой, она не имеет особого значения в регулярных выражениях.)

Ответ №1:

Вы говорите sed «запомнить» другие части и использовать их в строке замены. Т.е. используйте обратную ссылку.

 sed 's/("[0-9]*),([0-9]*")/12/g'