![vim/sed/awk를 사용하여 복잡한 텍스트를 추가하는 방법](https://linux55.com/image/158476/vim%2Fsed%2Fawk%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%B3%B5%EC%9E%A1%ED%95%9C%20%ED%85%8D%EC%8A%A4%ED%8A%B8%EB%A5%BC%20%EC%B6%94%EA%B0%80%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
다음의 이전 게시물(명령줄에서 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
답변3
재미와 학습을 위해 vimgolf와 같은 예가 있습니다.
vim +"4t4|/D/,/}/t4|'[,s/06/15/|s/52716/18015/|x" file.conf
명령은 다음으로 구분됩니다 |
.
4t4
4행을 4행으로 복사합니다./D/,/}/t4
첫 번째가 포함된 줄부터D
다음이 포함된 줄}
, 4번째 줄까지 복사합니다.'[,s/06/15/
마지막으로 변경된 첫 번째 줄부터 현재 줄(마지막으로 변경된 줄)까지 다음06
으로 바꿉니다.15
s/52716/18015/
현재 줄에서 바꾸기(06
마지막 교체 위치)x
변경 사항을 저장하고 종료합니다.