SED在带有反斜杠字符的文本后添加一行

时间:2015-12-18 07:51:16

标签: bash sed

我有一个名为:options.conf的文件 在该文件中是这样的:

where val = 'Endorsement'

现在我已经制作了一个SED bash .SH文件(一切正常)预计1件事不起作用:(那就是在文件中加一行......后 -queue_run \ -rejected_header \ -retry_defer \ -skip_delivery \

我想在-skip_delivery \

之后添加这一行:+arguments(不含黑色,只有文字)

所以它看起来像这样:

-skip_delivery \

我现在试着让这项工作工作2个小时,有人可以帮助我吗? 我已经尝试了这个:

      -queue_run \
      -rejected_header \
      -retry_defer \
      -skip_delivery \
      +arguments

但没有结果:(

2 个答案:

答案 0 :(得分:1)

只需:

sed '/-skip_delivery/a \ \ +arguments' file

sed命令中的错误是包含正则表达式\/的转义斜杠。

答案 1 :(得分:0)

sed append语法是这样的:

sed '/PATTERN/ a\
    Line which you want to append' filename

您的命令有两个问题:

  • 反斜杠\需要转义。你没有逃避它,所以它将命令a之前的斜杠变成了文字字符。
  • 此外,您需要使用选项-e来指定要执行的命令。

固定代码如下所示:

sed  -i -e '/  -skip_delivery \\/ a\
+arguments' /root/options.conf