如何匹配“逗号周围的数字”与sed?

时间:2010-07-27 11:09:54

标签: sed

我希望在以下字符串中匹配12,345:adf99fgl12,345qsdfm34

一般情况下,我有一个带逗号的数字(价格),包含数字,字母和其他符号的字符串,但没有其他逗号。我想告诉sed提取价格,也就是说,逗号之前和之后的所有数字以及逗号。

我发现的最接近的表达是:

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

谢谢

3 个答案:

答案 0 :(得分:1)

如何使用grep代替sed

echo adf99fgl12,345qsdfm34 | grep -Eo '[0-9]+,[0-9]*'

答案 1 :(得分:1)

要查找文本,通常最好使用grep:

echo uaiuiae12,3456udeaitentu676 | grep -o -E '([[:digit:]]+,[[:digit:]]+)'
  • -E将启用扩展正则表达式
  • -o只会输出匹配本身

答案 2 :(得分:0)

Bash 3.2 +

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