5 我一直在摆弄这一段时间,似乎无法弄明白。我要做的是用一个#替换文件中的所有数字。 听起来很简单,它应该是,但我无法理解它。任何帮助,将不胜感激。 我到目前为止(但不起作用)是: echo "fdsafdsa 32432 dsafdas" | sed 's/[0-9]+/#/g' 我期望的输出是: fdsafdsa # dsafdas 但是sed给了我相同的字符串,没有任何替换。 有线索吗? linux regex sed find-and-replace — acidtv source
8 你不需要+。只需使用以下内容: echo "fdsafdsa 32432 dsafdas" | sed 's/[0-9]/#/g' [0-9]将匹配所有数字,并替换每一个数字#。 既然+是扩展语法,你也可以这样做: echo "fdsafdsa 32432 dsafdas" | sed -E 's/[0-9]+/#/g' 用一个 替换整个数字块#。 — slhck source 谢谢!这确实是我正在寻找的扩展语法。 — acidtv 1 如果没有扩展语法,你也可以逃脱+,例如sed 's/[0-9]\+/#/g',因为否则它将被视为文字加号。 — slhck 我实际上尝试过,当我尝试它时它没有用。现在回想起来,似乎在我的mac sed \ +上不起作用,但它确实是debian。我今天学到了很多东西:) — acidtv GNU sed(Debian附带的)和BSD sed(OS X中的那个)的解释是不同的。之前检查两个实用程序的联机帮助页总是好的,因为GNU和BSD工具的功能可能不同。 — slhck