[英]skip lines after sed regular expression match
我正在嘗試使用sed
編輯aws elasticbeanstalk nginx配置文件。 我想在默認位置之后插入一個新的位置塊。
為此,我要匹配上一個位置塊中的一行,然后我想跳過8行,然后插入文本。
這是我運行sed之前的樣子
upstream nodejs {
server 127.0.0.1:8081;
keepalive 256;
}
server {
listen 8080;
location / {
proxy_pass http://nodejs;
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
這是我天真的嘗試來構建實際上不起作用的命令,而只是將新塊proxy_pass http://nodejs;
在包含proxy_pass http://nodejs;
的行下proxy_pass http://nodejs;
。
sed -i '/nodejs;/a \ location ^~ /blog {}' /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf
如何在regex
標識的行之后跳過8行。 另外,也建議您使用其他方法來標識我要放置新塊的位置。
這會尋找nodejs;
並向下跳八行,然后插入location ^~ /blog {}
。 您沒有顯示所需的輸出,但是根據問題,我推斷這是您要查找的內容:
$ sed '/nodejs;/ {n;n;n;n;n;n;n;n;s/^/ location ^~ \/blog {}\n/}' file
upstream nodejs {
server 127.0.0.1:8081;
keepalive 256;
}
server {
listen 8080;
location / {
proxy_pass http://nodejs;
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ^~ /blog {}
}
sed命令為:
/nodejs;/ {n;n;n;n;n;n;n;n;s/^/ location ^~ \\/blog {}\\n/}
首先查找包含nodejs;
行nodejs;
並在找到后執行大括號中的語句。
n
打印當前模式空間並讀取下一行。 我們這樣做八次。 這具有跳下八行的效果。
s/^/ location ^~ \\/blog {}\\n/
在第八行進行更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.