Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash SED在带有反斜杠字符的文本后添加一行_Bash_Sed - Fatal编程技术网

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

Bash SED在带有反斜杠字符的文本后添加一行,bash,sed,Bash,Sed,我有一个名为:options.conf的文件 该文件中有以下行: -queue_run \ -rejected_header \ -retry_defer \ -skip_delivery \ 现在我已经创建了一个SED bash.SH文件(每件事都可以正常工作),除了一件事不起作用外:(那就是在文件中添加一行。之后-跳过交付\ 我想在-跳过交付\ 所以它看起来是这样的: -queue_run \ -rejected_header \ -re

我有一个名为:options.conf的文件 该文件中有以下行:

  -queue_run \
  -rejected_header \
  -retry_defer \
  -skip_delivery \
现在我已经创建了一个SED bash.SH文件(每件事都可以正常工作),除了一件事不起作用外:(那就是在文件中添加一行。
之后-跳过交付\

我想在
-跳过交付\

所以它看起来是这样的:

      -queue_run \
      -rejected_header \
      -retry_defer \
      -skip_delivery \
      +arguments
sed '/PATTERN/ a\
    Line which you want to append' filename
sed  -i -e '/  -skip_delivery \\/ a\
+arguments' /root/options.conf
我正在努力完成这项工作两个小时,有人能帮我吗? 我已经试过了:

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

但是没有结果:(

sed append语法如下所示:

      -queue_run \
      -rejected_header \
      -retry_defer \
      -skip_delivery \
      +arguments
sed '/PATTERN/ a\
    Line which you want to append' filename
sed  -i -e '/  -skip_delivery \\/ a\
+arguments' /root/options.conf
您的命令中有两个问题:

  • 反斜杠
    \
    需要转义。您不能转义它,因此它将命令
    a
    之前的斜杠转换为文字字符
  • 此外,您需要使用选项
    -e
    来指定要执行的命令
固定代码如下所示:

      -queue_run \
      -rejected_header \
      -retry_defer \
      -skip_delivery \
      +arguments
sed '/PATTERN/ a\
    Line which you want to append' filename
sed  -i -e '/  -skip_delivery \\/ a\
+arguments' /root/options.conf
只是:


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

为什么不使用
echo“+参数”>>options.conf
?伙计,这不仅仅是options.conf文件中的4行内容。这是一个大的结构化配置文件:-我只需要在-skip\u delivery!结尾的log\u selector中添加一行内容!使用SED!!!因为我正在编写SH脚本谢谢你回答@oxnz,但是你的固定代码对我不起作用..在options.conf
-skip\u deliver中ery\
站在那里..在那里的下面我看不到:
-参数
:(您可能想稍微放松一下您的模式,因为我看到在
-跳过交付之前有两个空格,对吗?您可能想用
/\s*-跳过交付\s*\/
\s*`替换模式意味着匹配任何空格字符,但这对我来说很好:
sed-I'/-跳过交付/a\\\\\\+参数”文件
可以吗?)谢谢你的帮助;)坦斯克混乱!!这是有效的,你只会忘记放
i
选项;)愿上帝保佑像你这样的人;)