Замена на выражение sed

Замена на выражение sed

Я пытаюсь получить значение, например

"909,999"

С помощью этого (пример заменяет его ничем):

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

Но это не работает.

решение1

Если вы хотите заменить шаблон, вы можете использовать sed -Eили экранировать +символы, как предлагает @Kusalananda:

$ printf '"123.456"\n"909,999"\n"100"\n' | sed -E 's/"[0-9]+,[0-9]+"//g'
"123.456"

"100"

или

$ printf '"123.456"\n"909,999"\n"100"\n' | sed 's/"[0-9]\+,[0-9]\+"//g'
"123.456"

"100"

Обратите внимание, что gв этом примере не требуется, поскольку в каждой строке используется только одна замена.


Если вы хотите удалить соответствующие строки, вы можете использовать dдля удаления шаблонного пространства:

$ printf '"123.456"\n"909,999"\n"100"\n' | sed '/"[0-9]\+,[0-9]\+"/d'
"123.456"
"100"

Связанный контент