Как я могу удалить все перед первым вхождением указанного использования слова sed
?
Что я попробовал до сих пор:
echo $(cat /etc/nginx/sites-enabled/default | sed 's/^*.server/server/') > /etc/nginx/sites-enabled/default
Мне нужен к очистке весь мусор, прежде чем я найду первое слово "сервера".
Главным образом мне был бы нужен a sed
regex...
У меня есть файл значения по умолчанию Nginx с проксированием информации, которая получает некоторые ведущие пробелы, в то время как сценарий копирует его в контейнер Докера и поэтому его наклон быть запущенным. Я должен был бы удалить его с некоторой командой.
Файл:
server
{
listen 80 default_server;
location /
{
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_pass http://127.0.0.1:5000;
}
}
Я не уверен, какие символы там, таким образом, я хотел бы удалить все перед 'сервером'.
Вы просто удаляете каждый пробельный символ (вкладки, пробелы, безотносительно) между началом строки и словом "сервер" (только если нет ничего иного кроме пробелов), использование следующей простой команды:
sed -i 's/^\s*server/server/' FILENAME
-i
опция изменяет оперативный файл, который означает, что все изменения применяются и сразу сохраняются, и Вы не получаете вывода. Если Вы не захотите переписывать файл и видеть измененную новую версию вместо этого, опускать -i
, то опция и команда распечатают его к STDOUT (поток стандартного вывода).
я использую regex ^\s*server
, чтобы соответствовать любому количеству любого вида пробелов между началом строки и словом "сервер" включительно, и позволить ему заменить те соответствия словом сам "сервер".
GNU sed имеет специальную форму обращения диапазона 0,/pattern/
, который позволяет Вам соответствовать только первому вхождению pattern
в Вашем файле, например,
sed '0,/server/ s/^.*server/server/' /etc/nginx/sites-enabled/default
или (возможно, лучше, так как это привязывает соответствие к запуску строки также)
sed '0,/^.*server/ s//server/' /etc/nginx/sites-enabled/default
Попытка это сначала, прежде чем Вы будете добавлять -i
(оперативный) флаг и/или будете использовать резервное копирование -i.bak