Изменить конкретную строку в файле при передаче с использованием SSH

Я развертываю свой проект на производственном сервере с помощью команды scp. В рамках процесса развертывания я загружаю на сервер файл .htaccess. Локально среда устанавливается на DEVELOPMENT:

#Set environment
#[PRODUCTION, STAGING, TESTING, DEVELOPMENT] 

SetEnv KOHANA_ENV 'DEVELOPMENT'

Однако при загрузке на сервер ее необходимо изменить на PRODUCTION. Есть ли способ сделать это с помощью ssh?

3
задан 20 June 2014 в 16:43

3 ответа

Можно сделать это с sed команда и эти -i флаг для редактирования файла на месте:

sed -i "s/SetEnv KOHANA_ENV 'DEVELOPMENT'/SetEnv KOHANA_ENV 'PRODUCTION'/g" /path/to/.htaccess

Через ssh я был бы похож на это:

ssh user@host "sed -i \"s/SetEnv KOHANA_ENV 'DEVELOPMENT'/SetEnv KOHANA_ENV 'PRODUCTION'/g\" /path/to/.htaccess"

Работа с sed к строкам замены в файлах довольно проста:

sed -i 's/search_string/replace_string/g' file

Замены все происшествия search_string с replace_string из давания file. -i причины sed для редактирования файла на месте, вместо того, чтобы писать в стандартный вывод (stdout).

, Если Вы только хотите, чтобы первое вхождение было заменой, используют эту команду sed:

sed -i '0,/search_string/s/search_string/replace_string/' file

Для получения дополнительной информации [приблизительно 1 113] использование man sed.

6
ответ дан 20 June 2014 в 16:43

Можно непосредственно записать в файл локально следующим образом:

echo "#Set environment
#[PRODUCTION, STAGING, TESTING, DEVELOPMENT] 

SetEnv KOHANA_ENV 'PRODUCTION'" > /path/to/.htaccess

Не забывают заменять /path/to/ путем к .htaccess и затем копировать файл с помощью scp. Это заменит содержание файла.

2
ответ дан 20 June 2014 в 16:43

Если Вы хотите преобразовать просто 28-ю строку, можно сделать:

sed '28s/DEVELOPMENT/PRODUCTION/' file

(объединяемый с-i опцией, конечно)

, Если Вы не хотите изменять локальный файл, можно сделать:

< /local/path/to/.htaccess sed '28s/DEVELOPMENT/PRODUCTION/' | ssh user@host "cat > /server/path/to/.htaccess"
2
ответ дан 20 June 2014 в 16:43

Другие вопросы по тегам:

Похожие вопросы: