次の前の投稿(コマンドラインで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/;
}
}
つまり、ジェンキンス2という単語が最初に表示されることを見つけたら、次のものを追加する必要があります。
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
1行下に移動":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