我尝试用空字符串sed
替换所有数字后跟一个点(例如3.
, )的模式。因此我尝试:355.
sed 's/\d+\.//g' file.txt
但它不起作用。这是为什么呢?
答案1
答案2
两个问题:
sed
不支持\d
。使用[0-9]
或[[:digit:]]
。+
必须用反斜杠来表示特殊含义:\+
。
答案3
几年后,在添加其他答案时,我发现我想要更复杂的正则表达式的扩展功能
这只+
需要一个或多个,并且通常使字符串对我的情况和这个情况都更加明显
# NOTE \d is not supported
sed --regexp-extended 's/[0-9]+\.//g'
使用sed
4.7
答案4
sed 手册页引用了 re_format 手册页。它做了 2 个区分:(1) 过时的正则表达式与扩展的正则表达式;(2) 非增强的正则表达式与增强的正则表达式。所有 4 种组合都是可能的。sed 支持过时的正则表达式和扩展的正则表达式,但无论哪种情况,都只支持非增强的正则表达式。\d 运算符是增强正则表达式的一个特性,因此 sed 不支持它。