1

我想使用 sed 从字符串中删除所有浮点数。因此我使用

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

但它不起作用:

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

1.2456. 如果我删除该[ +-]?块,它适用于正数。

4

4 回答 4

4

您需要转义问号:

echo 1.2456 | sed -e 's/[ +-]\?[0-9]*\.[0-9]*//g'
于 2012-10-11T13:03:18.203 回答
1

?符号是扩展的正则表达式字符。sed需要使用-r选项调用以启用扩展表达式。

于 2012-10-11T13:07:54.510 回答
0

这个版本更具可比性。? 不适用于所有系统,+ 可以表示重复一次或多次。

echo 1.2456 | sed -e 's/[ \+\-]*[0-9]*\.[0-9]*//g'
于 2012-10-11T21:30:43.327 回答
0

逃脱?sed -r

那么它应该可以工作。

于 2012-10-11T13:04:27.537 回答