как использовать find и grep с циклом и переменными?

Ваша собственная попытка sed '/\"/,/\"/s/,//'не удалась, потому что указанный вами диапазон адресов фильтрует только диапазон строк, а не диапазон внутри строки.

Этот тип задач является неприятным в стандарте sed. Если речь идет всего об одной запятой, то sed -E 's/("[0-9]*),([0-9]*")/\1 \2/поможет, но для нескольких запятых вам придется зацикливаться, что даст уродливые результаты, такие как

sed -Ee :loop -e 's/("[0-9 ]*),([^"]*")/\1 \2/;tloop'

("[0-9]*)соответствует открывающей двойной кавычке, за которой следует любое количество цифр, и будет называться \1в замене, ([^"]*")соответствует чему угодно после запятой до закрывающей ", поэтому \1 \2то же самое, но с заменой первой запятой.

Теперь команда tпереходит к отметке loop, если была произведена замена. Это повторяется до тех пор, пока не останется запятой, которую нужно заменить.

Это работает даже для случаев с более чем одним числом с любым количеством запятых:,7/30/2019,"99,999,999,999,999",0,1,"10,000","foo, bar"будет преобразовано в,7/30/2019,"99 999 999 999 999" 0 1 "10 000" "foo, bar"

0
30.09.2021, 10:54
0 ответов

Теги

Похожие вопросы