как сопоставить "числа вокруг запятой" с sed? - PullRequest
0 голосов
/ 27 июля 2010

я хочу соответствовать 12,345 в следующей строке: adf99fgl12,345qsdfm34

В общем случае у меня есть число (цена) с запятой в строке, которая содержит цифры, буквы и другие символы, но без запятых. Я хочу сказать, чтобы sed извлекал цену, то есть все числа до и после запятой и запятую.

Самое близкое выражение, которое я нашел, было:

echo adf99fgl12,345qsdfm34 | sed "s / [^ 0-9] * \ ([0-9] +, [0-9] * \) [^ 0-9] * / \ 1 /"

Спасибо

Ответы [ 3 ]

1 голос
/ 27 июля 2010

Как насчет использования grep вместо sed?

echo adf99fgl12,345qsdfm34 | grep -Eo '[0-9]+,[0-9]*'
1 голос
/ 27 июля 2010

для поиска текста вам обычно лучше использовать grep:

echo uaiuiae12,3456udeaitentu676 | grep -o -E '([[:digit:]]+,[[:digit:]]+)'
  • -E включит расширенные регулярные выражения
  • -o выведет только само совпадение
0 голосов
/ 27 июля 2010

Баш 3.2 +

$ var="adf99fgl12,345qsdfm34"
$ [[ $var =~ '(.[^0-9]*)([0-9]*,[0-9]*)(.[^[0-9]*)' ]]
$ echo ${BASH_REMATCH[2]}
12,345
...