如何搜索并替换包含/
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