以下较旧的帖子(如何在命令行上使用 vim 将文本添加到文件中间?&如何将一个文件的内容插入到另一个文件的模式(标记)之前?),我有一个更复杂的案例,需要您的建议。我有以下 Test.conf 文件:
server {
listen 80;
server_name jenkins2;
location /DE06/ {
proxy_pass http://jenkins2:18015/DE06/;
}
}
我想运行一个命令,所以最后,文件内容将是:
server {
listen 80;
server_name jenkins2;
location /DE15/ {
proxy_pass http://jenkins2:18015/DE15/;
}
location /DE06/ {
proxy_pass http://jenkins2:52716/DE06/;
}
}
意味着我需要找到单词 jenkins2 的第一次出现,然后添加以下内容:
location /DE15/ {
proxy_pass http://jenkins2:18015/DE15/;
}
知道什么是正确的命令吗?
答案1
vim +/jenkins2 +j +":r insert.txt" +gg=G +wq testfile.txt
其中 insert.txt 包含您要添加的代码段,testfile.txt 是您要编辑的文件。
不过,我不确定 vim 是最好的工具。
+/jenkins2
搜索詹金斯2+j
向下移动一行":r insert.txt"
读取要插入的文件。注意引号!+gg=G
自动缩进文件+wq
并写下来
答案2
我找到了一个有效的 sed 命令:
sed -i -e '/jenkins5/{ r example.txt' -e '; :L; n; bL;}' nginx_jenkins.conf
当需要 env 参数时,可以使用:
sed -i -e '/'${Alias}'/{ r example.txt' -e '; :L; n; bL;}' nginx_jenkins.conf