Как закомментировать строки кода в bash? - PullRequest
1 голос
/ 06 июня 2019

Мне нужно закомментировать 3 строки в конфигурации Apache:

    RewriteEngine On
    #RewriteBase /wordpress/
    RewriteRule ^index\.php$ - [S=1]
    #RewriteCond %{REQUEST_FILENAME} !-f    <- 
    #RewriteCond %{REQUEST_FILENAME} !-d    <- 
    #RewriteRule . index.php [L]            <- 

для 1000 машин.

Как закомментировать последние 3 строки, используя команды bash через ssh для всех этих машин?

Пример ввода

    RewriteEngine On
    #RewriteBase /wordpress/
    RewriteRule ^index\.php$ - [S=1]
    RewriteCond %{REQUEST_FILENAME} !-f    <- 
    RewriteCond %{REQUEST_FILENAME} !-d    <- 
    RewriteRule . index.php [L]            <- 

Пример вывода

    RewriteEngine On
    #RewriteBase /wordpress/
    RewriteRule ^index\.php$ - [S=1]
    #RewriteCond %{REQUEST_FILENAME} !-f    <- 
    #RewriteCond %{REQUEST_FILENAME} !-d    <- 
    #RewriteRule . index.php [L]            <- 

Ответы [ 2 ]

0 голосов
/ 07 июня 2019

Если вы хотите прокомментировать последние три строки каждого файла, вам, вероятно, следует использовать ed:

ed file <<END
$;#
-2;#
s/[^[:blank:]]/#&/
+s
+s
wq
END

Демо:

#!/bin/sh
f=$(mktemp)

trap 'rm "$f"' EXIT

cat >"$f"  <<END
    RewriteEngine On
    #RewriteBase /wordpress/
    RewriteRule ^index\.php$ - [S=1]
    RewriteCond %{REQUEST_FILENAME} !-f    <- 
    RewriteCond %{REQUEST_FILENAME} !-d    <- 
    RewriteRule . index.php [L]            <- 
END

ed "$f" <<END >/dev/null
$;#
-2;#
s/[^[:blank:]]/#&/
+s
+s
wq
END

cat "$f"

Вывод:

    RewriteEngine On
    #RewriteBase /wordpress/
    RewriteRule ^index\.php$ - [S=1]
    #RewriteCond %{REQUEST_FILENAME} !-f    <- 
    #RewriteCond %{REQUEST_FILENAME} !-d    <- 
    #RewriteRule . index.php [L]            <-
0 голосов
/ 07 июня 2019

вы можете использовать следующий sed для комментирования строк:

sed '
    s/^RewriteCond %{REQUEST_FILENAME} !-[fd]/#&/
    s/^RewriteRule \. index.php \[L\]/#&/
' inputfile.txt > outputfile.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...