2012-10-11 95 views
1

我想使用sed從字符串中刪除所有浮點數。所以我用爲什麼sed -e's/[+ - ]?[0-9] * 。[0-9] * // g'不起作用?

sed -e 's/[ +-]?[0-9]*\.[0-9]*//g' 

但它不工作:

echo 1.2456 | sed -e 's/[ +-]?[0-9]*\.[0-9]*//g' 

1.2456。如果我刪除了[ +-]?塊,它對正數有效。

+0

我只接受他們,如果他們解決了。由於我需要它們,開放的並不能解決問題。 –

+0

請注意,您的正則表達式還會刪除單點。 – Thor

回答

1

?符號是一個擴展的正則表達式字符。需要使用-r選項調用sed以啓用擴展表達式。

4

你需要躲避問號:

echo 1.2456 | sed -e 's/[ +-]\?[0-9]*\.[0-9]*//g' 
0

逃生?sed -r

那麼它應該工作。

0

該版本更具可比性。 ?不適用於所有系統,而+可能意味着重複一次或多次。

echo 1.2456 | sed -e 's/[ \+\-]*[0-9]*\.[0-9]*//g' 
相關問題