为什么sed命令无法替换匹配的字符串?

时间:2015-04-08 06:36:34

标签: linux sed

我的文件名'old'包含'123 abc'。当我在linux终端中使用下面的sed命令时:

 sed 's:[0-9]+:& &:' <old \> new 

新文件包含与'123 abc'相同的旧数据。 但输出应为'123 123 abc'。 我不知道我哪里错了。任何人都可以帮助我......

2 个答案:

答案 0 :(得分:1)

两个小言论:

  • 你在+签名
  • 之前使用反斜杠
  • 无需在>符号前使用反斜杠来管道输出:

    sed 's:[0-9]\+:& &:' old > new

(和一个小的改动;但没有必要:在输入文件之前不需要<; sed知道你会给它一个文件。)

答案 1 :(得分:1)

将您的命令更改为:

sed 's:[0-9]\+:& &:' old > new

OR

sed -r 's:[0-9]+:& &:' old > new 

-r:使用扩展正则表达式(在我们的示例中,+可以按预期工作)