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
в замещенном выражении для безопасности - если вы измените одно, другое будет следовать. Таким образом, %#$1%
фактически является вторым %
s
, за которым следует желаемый #
, $1
, указывающий узор внутри скобок, и последний %
от s
.
HTH. РУКА.
Это действительно более подходит для serverfault.com, imho. –
Я не понимаю, почему он подходит для serverfault.Кажется, он не имеет ничего общего с серверами. Он принадлежит суперпользователю. Голосование, чтобы закрыть как таковое. – rmeador
/bin/sh или bash или csh или любая другая оболочка - это полные языки Turing. Почему вы не думаете, что «Как достичь X в языке Y?» принадлежит StackOverflow? – dmckee