我正在尝试用sed
(流编辑器)替换字符串,但是我收到了错误。可能是因为我没有正确使用字符串,因为符号。
我正在尝试替换以下字符串:
<VirtualHost |IP|:|PORT_80| |MULTI_IP|>
和
<VirtualHost 127.0.0.1:8080 |IP|:8080 |MULTI_IP|>
在名为的文件中virtual_host2.conf
Buw 当我尝试几件事时,我总是会收到错误,例如:
sed: -e expression #1, char 90: unterminated `s' command
sed: -e expression #1, char 20: unknown option to `s'
我不是很有经验sed
,但我可以正常替换文本字符串。但我认为是因为当前字符串中的符号,比如,|
它不像我想的那样工作。<
>
有人可以给我一个关于如何替换上述内容的工作示例吗?或者指出我正确的方向。
我自己尝试了以下方法:
sed -i 's<VirtualHost |IP|:|PORT_80| |MULTI_IP|>/<VirtualHost 127.0.0.1:8080 |IP|:8080 |MULTI_IP|>' /virtual_host2.conf
sed -i 's|<VirtualHost |IP|:|PORT_80| |MULTI_IP|>|<VirtualHost 127.0.0.1:8080 |IP|:8080 |MULTI_IP|>|g' /virtual_host2.conf
但两者都给出了上述错误。
任何想法?
/
你在sed 's///'
模式中省略。试试这个:如果一切正常,添加
-i
选项以在文件中执行真正的替换。g
模式中的选项's///g'
执行所有出现的全局替换,而不是每行中的第一个。您可以使用其他一些符号作为分隔符,例如
's|||'
,但在您的示例中没有意义,因为您需要引用每个|
符号。此命令将获得相同的输出: