【问题标题】:sed command to search string and append a line after searched stringsed 命令搜索字符串并在搜索字符串后追加一行
【发布时间】:2013-05-02 16:59:12
【问题描述】:

我有一个文件测试,里面有内容

Hi
Hello 
I am good.

我的要求是我必须编写一个 shell 脚本来搜索文件 test 中的 Hello sting 并在其后添加一个新行,内容为 got it

为此,我使用命令:

sed '/Hello/ a "got it"' test

我收到此命令的以下错误:

sed:命令乱码:/Hello/ “知道了”

【问题讨论】:

    标签: shell unix sed


    【解决方案1】:

    尝试:

    sed '/Hello/ a \"got it"' file
    

    a 是追加命令。阅读man sed了解详情

    用你的例子测试:

    kent$  echo "Hi
    Hello 
    I am good."|sed '/Hello/ a \"got it"'
    Hi
    Hello 
    "got it"
    I am good.
    

    【讨论】:

    • 不需要转义第二个双引号吗? a \"got it\" '?
    • a \ text Append text, which has each embedded newline preceded by a backslash.
    • @Kent 在尝试使用 sed '/Hello/ a \"got it"' 测试后,我仍然遇到同样的错误。
    【解决方案2】:

    @Kishore,您的“命令乱码”错误可能表明您在键入命令时使用了“AltGr + Space”而不是空格,或者您没有使用常规的直立单引号。

    其实空格根本不需要,如果你只是想在比赛后面的那一行写上“得到它”,那就去吧:

    sed '/Hello/agot it' test
    

    效果很好,@Kent 解决方案中的反斜杠是不必要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-26
      • 1970-01-01
      • 2020-01-06
      • 2012-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多