특정 문자로 시작하지 않는 모든 줄을 삭제하려면 어떻게해야합니까?
-
19-09-2019 - |
문제
"+"또는 "-"로 시작하지 않는 모든 줄을 삭제하려면 정규 표현식을 찾아야합니다.
큰 Diff 파일의 용지 사본을 인쇄하고 싶지만 실제 Diff 전후에 5 줄 정도가 표시됩니다.
해결책
VIM에서 :
:g!/^[+-]/d
영어 번역은 다음과 같습니다.
g
Lobally는 그렇지 않은 모든 줄에 무언가를합니다!
정규 표현식 : 라인의 시작과 일치하십시오^
그 뒤에 +
또는 -
, 그리고 그 일이 그럴 것입니다 d
그 선을 엘레트하십시오.
다른 팁
sed -e '/^[^+ -]/d'
diff -u <some args here> | grep '^[+-]'
또는 추가 라인을 전혀 생성 할 수 없습니다.
diff --unified=0 <some args>
cat your_diff_file | sed '/^[+-]/!D'
egrep "^[+-]" difffile >outputfile
일치하지 않는 모든 것을 삭제하는 대신 일치하는 라인 만 표시됩니다. :)
정규 표현식에서 더 복잡한 일을 해야하는 경우이 사이트를 사용해야합니다.http://txt2re.com/
또한 다양한 언어에 대한 코드 예제도 제공합니다.
%!grep -Ev '^[+-]'
현재 파일에서 인라인을 인라인하고보다 훨씬 빠를 수 있습니다. :v
큰 파일의 경우.
VIM 7.4, Ubuntu 14.04, 1m 라인 로그 파일에서 테스트.
단어가 포함되지 않은 줄 : https://superuser.com/questions/265085/vim-delete-all-lines-that-do-not-contain-a-cential-word/1187212#1187212
제휴하지 않습니다 StackOverflow