2010-07-27 84 views
0

我想在下面的字符串匹配12345:adf99fgl12,345qsdfm34如何將「逗號附近的數字」與sed匹配?

在一般的情況下,我有一個數字(價格)用逗號,在包含數字,字母和其他符號的字符串,但沒有其他逗號。我想告訴sed提取價格,也就是說,逗號前後的所有數字和逗號。

我發現的最接近表達:

回波adf99fgl12,345qsdfm34 | SED 「S/[^ 0-9] * \([0-9] +,[0-9] * \)[^ 0-9] */\ 1 /」

謝謝

+0

您的解決方案有什麼問題? – Beta 2010-07-27 17:31:17

+0

它根本不起作用(嘗試它) – user368507 2010-07-27 20:55:34

回答

1

如何使用grep而不是sed

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

Bash 3.2+

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

使用grep來查找文本,你通常是更好:

echo uaiuiae12,3456udeaitentu676 | grep -o -E '([[:digit:]]+,[[:digit:]]+)' 
  • -E將接通擴展正則表達式
  • -o將只輸出了比賽本身