替换sed中的数字块


5

我一直在摆弄这一段时间,似乎无法弄明白。我要做的是用一个#替换文件中的所有数字。

听起来很简单,它应该是,但我无法理解它。任何帮助,将不胜感激。

我到目前为止(但不起作用)是:

echo "fdsafdsa 32432 dsafdas" | sed 's/[0-9]+/#/g'

我期望的输出是:

fdsafdsa # dsafdas

但是sed给了我相同的字符串,没有任何替换。

有线索吗?

Answers:


8

你不需要+。只需使用以下内容:

echo "fdsafdsa 32432 dsafdas" | sed 's/[0-9]/#/g'

[0-9]将匹配所有数字,并替换每一个数字#


既然+是扩展语法,你也可以这样做:

echo "fdsafdsa 32432 dsafdas" | sed -E 's/[0-9]+/#/g'

一个 替换整个数字块#


谢谢!这确实是我正在寻找的扩展语法。
acidtv

1
如果没有扩展语法,你也可以逃脱+,例如sed 's/[0-9]\+/#/g',因为否则它将被视为文字加号。
slhck

我实际上尝试过,当我尝试它时它没有用。现在回想起来,似乎在我的mac sed \ +上不起作用,但它确实是debian。我今天学到了很多东西:)
acidtv

GNU sed(Debian附带的)和BSD sed(OS X中的那个)的解释是不同的。之前检查两个实用程序的联机帮助页总是好的,因为GNU和BSD工具的功能可能不同。
slhck
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.