파일이 너무 많아서 1 ~ 55 줄을 삭제하고 25 ~ 35 줄에 주석 (예 : //)을 추가 한 다음 새 파일에 저장합니다.여러 파일의 자동 편집
어떻게하면 bash 쉘에서 vim으로 자동으로 수행합니까?
파일이 너무 많아서 1 ~ 55 줄을 삭제하고 25 ~ 35 줄에 주석 (예 : //)을 추가 한 다음 새 파일에 저장합니다.여러 파일의 자동 편집
어떻게하면 bash 쉘에서 vim으로 자동으로 수행합니까?
vi의 조상 인 유닉스 라인 편집기 ed으로 우아하게이를 수행 할 수 있습니다.
fix_file() {
ed $1 <<< EOF
1,55d
25,35s_.*_// &_
wq
EOF
}
이제, 당신이 필요로하는 각 파일 F에 대해, 단지 fix_file F
을 실행합니다. ed
또는 sed
의 사용이 일반적인 관행 1, 가끔 빔을 사용하는 것이 훨씬 더 편리하다는 사실에도 불구하고
. 2 사실, 대신 "맹목적"는 ed
-like 스크립트를 작성이 경우, 대화 형
vim -w log.vim file1.txt
로 파일 중 하나의 원하는 편집을 수행 한 후 나머지를 반복하는 것이 더 쉽습니다 파일의.
gg55dd:25,35s/^/\/\//
:w %_new
:q!
주, 즉 새 이름으로 파일을 저장하기 위해 당신이 직접 입력하지해야하지만 오히려 %
대체를 사용 : 귀하의 경우 log.vim
파일에서
for f in file*.txt; do vim -s log.vim "$f"; done
가능성과 유사한 내용이있을 것이다 . 또 다른 방법은 파일 을 미리 복제 한 다음 해당 위치에서 편집 (각각을 :w
으로 저장)하는 것입니다.
이 접근법의 장점은 모든 변경 사항을 대화 형으로 확보하여 원하는 결과를 얻고 있다는 것입니다.
1 물론 당신은 ed
-like 방식으로 동일한 작업을 수행 할 수 있습니다.
for f in file*.txt; do vim -c '1,55d|25,35s/^/\/\/ /|w! '"${f}_new"'|q!' $f
2
그것이 분명히 빔 솔루션을 선호 하는 질문에 명시된 있다고 언급 할 필요가 없을 것입니다.GUI 버전 (gvim)을 사용하면 안됩니다. [내 질문] (http://stackoverflow.com/questions/3981535/using-the-w-option-of-vim) 및 관련 버그를 참조하십시오. GUI를 사용하여 스크립트 아웃풋을 편집해야합니다. – Benoit
@Benoit 경고를 보내 주셔서 감사합니다! 나는 GVim을 사용하지 않았기 때문에, 내가 알고있는 동안 그 행동을 눈치 채지 못할 것 같습니다. –
파일을 열지 않고 '편집'하려면'bash' 쉘에서'sed'를 사용해야합니다. – pavium
'ex'는'sed'보다 더 좋을 것이고,'ex'는 같은 명령어 세트'vi'를 사용합니다. –