我想使用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
。如果我刪除了[ +-]?
塊,它對正數有效。
我想使用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
。如果我刪除了[ +-]?
塊,它對正數有效。
?
符號是一個擴展的正則表達式字符。需要使用-r
選項調用sed
以啓用擴展表達式。
你需要躲避問號:
echo 1.2456 | sed -e 's/[ +-]\?[0-9]*\.[0-9]*//g'
逃生?
或sed -r
那麼它應該工作。
該版本更具可比性。 ?不適用於所有系統,而+可能意味着重複一次或多次。
echo 1.2456 | sed -e 's/[ \+\-]*[0-9]*\.[0-9]*//g'
我只接受他們,如果他們解決了。由於我需要它們,開放的並不能解決問題。 –
請注意,您的正則表達式還會刪除單點。 – Thor