2014-06-12 2 views
-1

500000 개가 넘는 줄이있는 텍스트 파일이 있습니다. 나는이 파일들을 편집하기 위해 VIM을 사용하고있다.VIM을 사용하여 파일의 줄 끝에 대괄호를 추가하는 방법

텍스트에는 각 줄에 대괄호가 있습니다. 불행히도 일부 줄에는 닫는 대괄호가 없습니다.

some text [ text 

some text [ text] 

some text [ text] 

some text [ text 

some text [ text] 

은 내가 빔을 사용하여 위의 결과를 수행하는 방법을 알고 싶습니다

some text [text] 

some text [text] 

some text [text] 

some text [text] 

some text [text] 

될 내 텍스트가 필요합니다.

답변

0

@ PeterRincker의 솔루션은 선택된 줄 끝에 ]을 추가하는 것이 좋습니다.

:%s/[^\]]\+ *$/&]/ 
+0

안녕하세요. 피터, 저에게 답장을 보내 주셔서 감사합니다. 백그라운드에서이 명령을 실행하는 방법을 알려주거나 bash, awk 또는 sed를 사용하여이 명령을 실행할 수있는 다른 방법이 있습니까? 내 파일에는 700000 줄이 포함되어 있기 때문입니다. 내 서버의 vim 편집기에서이 명령을 직접 실행하면 내 서버가 끊깁니다. – user1865445

+0

안녕하세요 @ user1865445, 저는 Peter가 아니지만 어쨌든'sed' 라인이 있습니다 :'sed 's/[^]] \ + * $/&]/'your_file.txt'. 유일한 차이점은 표현식에서 첫 번째'\'가 표시되지 않는다는 것입니다. – Qeole

+0

대단히 고맙습니다 ... – user1865445

2

그래서 많은 방법 :

  • 시각 블록 - 다음 실행 qqA]jq - :%normal A]
  • 매크로 - 일반 전 명령을 통해 :%s/$/]/
  • -<c-v>은 모든 선이 다음 $A]<esc>
  • 대체 값을 눌러 선택 via [email protected]

개인적으로 저는 대속으로 갈 것입니다.

+0

그래, 대체는 가장 빠른 :

지금, 당신의 첫 조각에서 여는 괄호는 당신이 모든 일을 정리하는 두 번째 대체를 실행해야 할 수도 있으므로 다음 단어의 공백으로 구분됩니다 입력, 가장 빠른 실행 및 가장 정확한. – Lstor

3
:%s/[^\]]$/&] 

대체 모든 마지막을 : 여기

은 (공백 다음에 또는 ]와)하지 ]로 끝나는 파일의 비어 있지 않은 모든 라인에 하나의 명령에 ]을 추가하는 제안입니다 문자 앞에 ]이없고 그 뒤에는 ]이 붙은 EOL 이전 문자를 사용합니다. 본질적으로 아무 것도없는 곳에 꼬리표를 추가합니다.

:%s/\[\s*/[ 
관련 문제