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