我想使用sed从字符串中删除所有浮点数。因此我使用
sed -e 's/[ +-]?[0-9]*\.[0-9]*//g'
但它不起作用:
echo 1.2456 | sed -e 's/[ +-]?[0-9]*\.[0-9]*//g'
给出1.2456
。如果我删除了[ +-]?
块,则它适用于正数。
答案 0 :(得分:4)
你需要逃避问号:
echo 1.2456 | sed -e 's/[ +-]\?[0-9]*\.[0-9]*//g'
答案 1 :(得分:1)
?
符号是扩展的正则表达式字符。需要使用sed
选项调用-r
以启用扩展表达式。
答案 2 :(得分:0)
逃避?
或sed -r
然后它应该工作。
答案 3 :(得分:0)
此版本更具可比性。 ?不适用于所有系统,+可能意味着重复一次或多次。
echo 1.2456 | sed -e 's/[ \+\-]*[0-9]*\.[0-9]*//g'