我的命令是这样的:
echo "12 cats" | sed 's/[0-9]+/Number/g'
(我在vanilla Mac中使用sed
)
我希望结果是:
Number cats
然而,真正的结果是:
12 cats
有没有人有这方面的想法?谢谢!
答案 0 :(得分:20)
+
必须被反击以获得其特殊含义。
echo "12 cats" | sed 's/[0-9]\+/Number/g'
答案 1 :(得分:16)
扩展+
修饰符对我有用:
echo "12 cats" | sed 's/[0-9][0-9]*/Number/g'
此外,-E
开关会使+
修饰符有效,请参阅choroba的回答。
答案 2 :(得分:2)
使用perl,这将适用于unix或linux。
echo "12 cats" | perl -pe 's/\d+/Number/g'
答案 3 :(得分:0)
以非常神秘的方式解释(至少在我迄今为止的资源中......), 你应该检查下一个术语:
globbing(在bash的上下文中), 正则表达式, 扩展正则表达式
对于你的问题,似乎expr'你给sed的是一个正则表达式或扩展的正则表达式....所以通过我读过的教程你应该在sed中的实际命令之前插入-r ...
回声" 12只猫" | sed -r' s / [0-9] + / Number / g'在Ubuntu 16.04中为我工作,bash。