#sed
#sed
Вопрос:
Я заменял одну строку, как в httpd.conf, столкнувшись с проблемой с уменьшением обратной косой черты при использовании sed ,
исходная строка
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" "%{True-Client-IP}i"" combined
заменено на
LogFormat "%h %l %u %t %D "%r" %>s %b "%{Referer}i" "%{User-Agent}i" "%{True-Client-IP}i"" combined
любой совет по экранированию всех этих специальных символов
Комментарии:
1. вы хотели добавить
%D
после%t
?2. да, используя sed или другой способ вставки
Ответ №1:
Попробуйте это:
sed -e 's/%t \"/%t %D \"/'
Комментарии:
1. sed -e -i ‘s/%t \»/%t %D \»/’ httpd.conf sed: -e выражение #1, символ 1: неизвестная команда: `-‘
2. @Christopher без
-i
как были бы сохранены изменения?3. Перенаправьте результат в другой файл, а затем замените старый файл новым.
sed -e 's/%t \"/%t %D \"/' httpd.conf > httpd.conf.new; mv httpd.conf.new httpd.conf
Ответ №2:
Через sed,
$ sed -i 's/^(.*%t)(.*)$/1 %D2/g' file
LogFormat "%h %l %u %t %D "%r" %>s %b "%{Referer}i" "%{User-Agent}i" "%{True-Client-IP}i"" combined
или
$ sed -i 's/%t/%t %D/' file
LogFormat "%h %l %u %t %D "%r" %>s %b "%{Referer}i" "%{User-Agent}i" "%{True-Client-IP}i"" combined
Комментарии:
1. когда я когда-либо выполняю команду sed, она отображает весь http.conf, и ничего не изменилось
2. вам нужно добавить опцию встроенного редактирования, чтобы сделать изменения постоянными. Обновлено, мой ответ.