我想使用 sed 从字符串中删除所有浮点数。因此我使用
sed -e 's/[ +-]?[0-9]*\.[0-9]*//g'
但它不起作用:
echo 1.2456 | sed -e 's/[ +-]?[0-9]*\.[0-9]*//g'
给1.2456
. 如果我删除该[ +-]?
块,它适用于正数。
您需要转义问号:
echo 1.2456 | sed -e 's/[ +-]\?[0-9]*\.[0-9]*//g'
该?
符号是扩展的正则表达式字符。sed
需要使用-r
选项调用以启用扩展表达式。
这个版本更具可比性。? 不适用于所有系统,+ 可以表示重复一次或多次。
echo 1.2456 | sed -e 's/[ \+\-]*[0-9]*\.[0-9]*//g'
逃脱?
或sed -r
那么它应该可以工作。