sed - 查找并替换包含“/”的文本

sed - 查找并替换包含“/”的文本

如何搜索并替换包含/sed 的文本?

我目前使用以下命令不起作用

sed -i "s/queue_directory = /var/spool/postfix-secondary/queue_directory = /var/spool/postfix-$newnumber/g" /etc/postfix-$newnumber/main.cf

答案1

一种方法是选择除 之外的不同分隔符/。例如,使用|

sed -ie "s|queue_directory = /var/spool/postfix-secondary|queue_directory = /var/spool/postfix-$newnumber|g" /etc/postfix-$newnumber/main.cf

另一种方法是反斜杠转义其他斜杠:

sed -ie "s/queue_directory = \/var\/spool\/postfix-secondary/queue_directory = \/var\/spool\/postfix-$newnumber/g" /etc/postfix-$newnumber/main.cf

针对您的特定用途还有两个建议。首先,我认为您不需要 g 标志,除非您预计替换会在同一行中多次出现。其次,如果您只是尝试更改指令,则无论以前的值是什么,您都可能只是更改它。例如:

sed -ie "s|^queue_directory =.*|queue_directory = /var/spool/postfix-$newnumber|" /etc/postfix-$newnumber/main.cf

相关内容