perl -p -i -e 's%^(include /etc/nginx/https.include;)$%#$1%' /etc/nginx/ap-servers.include
如果该行可能不会在;
结束,则应使用:
perl -p -i -e 's%^(include /etc/nginx/https.include;.*)$%#$1%' /etc/nginx/ap-servers.include
如果你想保留原始文件,添加一个备份扩展-i
后:
perl -p -i.bak -e 's%^(include /etc/nginx/https.include;)$%#$1%' /etc/nginx/ap-servers.include
现在解释一下。 -p
标志表示就地替换。文件的所有行都将被输入到表达式中,结果将被用作替换。 -i
标志表示备份文件的扩展名。通过无任何使用,您可以防止生成备份。 -e
告诉Perl获取以下参数作为要执行的表达式。
现在,表达式是s%something%other%
。我使用%
而不是更传统的/
来避免必须避开路径的斜杠。我在表达式中使用括号并在替代表达式中使用括号 - 如果您更改了一个,则另一个将会跟随。因此,%#$1%
实际上是s
第二%
,接着是所需的#
,$1
指示在括号内的图案,以及s
最后%
。
HTH。手。
这对于serverfault.com,imho更合适。 – 2009-08-13 18:55:03
我不明白为什么它适合serverfault。它似乎与服务器没有任何关系。它属于超级用户。投票结束。 – rmeador 2009-08-13 19:14:44
/bin/sh或bash或csh或任何其他shell是图灵完整语言。你为什么不认为“如何在Y语言中实现X?”属于StackOverflow? – dmckee 2009-08-14 02:14:59