【问题标题】:Why sed command is unable to substitute matched string?为什么 sed 命令无法替换匹配的字符串?
【发布时间】:2015-04-08 15:22:17
【问题描述】:

我的文件名“旧”包含“123 abc”。当我在 linux 终端中使用以下 sed 命令时:

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

新文件包含与旧文件相同的数据,即“123 abc”。 但输出应该是“123 123 abc”。 我不知道我错在哪里。谁能帮帮我……

【问题讨论】:

  • 您的问题现在解决了吗?您可能会考虑接受其中一个答案?

标签: linux sed


【解决方案1】:

将您的命令更改为:

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

或

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

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

【讨论】:

    【解决方案2】:

    两句小话:

    • 您应该在+ 符号前使用反斜杠
    • 无需在&gt; 符号前使用反斜杠来管道输出:

      sed 's:[0-9]\+:&amp; &amp;:' old &gt; new

    (还有一个小改动;但不是必需的:输入文件之前不需要&lt;;sed 知道你会给它一个文件。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-20
      • 1970-01-01
      • 2021-05-16
      • 2020-12-25
      • 2016-11-12
      • 2019-09-28
      • 2021-10-28
      • 1970-01-01
      相关资源
      最近更新 更多