2012-12-06 3 views
2

I는 다음과 같은 여러 줄의 텍스트 파일이 있습니다. ctrl-s을 사용하고 각 행을 개별적으로 종료합니다. 한 번에 모든 줄을 제거 할 수 있습니까?제거 라인

답변

6

M-x delete-matching-lines. 정규 표현식을 사용할 수 있습니다.

+2

일명'플러시 lines' :

따라서 li을 포함하는 행을 삭제하려면, 당신은 ^J가 개행 문자입니다 문자열 ^.*li.*^J에 명령 query-replace-regexp을 실행할 수 있습니다. – Sean

+0

명령을 버퍼 뒤의 부분이나 영역에 적용하고 예를 위해 작동하는 정규 표현식이'^ amanda. * '라고하는 것과 같이 응답을 더 자세히 작성하고자 할 수 있습니다. '. –

1

빈 문자열에 정규식 ^.*amanda.*$과 함께 query-replace-regexp을 사용하는 것도 한 방법입니다.

1

비록 @Marcos's answer은 관용적 인 것이지만 다른 변종을 탐색 해 보겠습니다. 의 당신은 텍스트 버퍼를 가지고 당신이 그것에 li을 포함하는 행을 삭제하려면 가정 해 봅시다 :

Vladimir 
Ilich 
Ulyanov 

^ 일치하는 라인과 정규식 라인의 $ 끝의 시작 있음을 기억하십시오. 따라서

Vladimir 

Ulyanov 

을가 ^ 전에 일치하는 것은 불가능 어떤 이유로 정규식에서 후 $ : $ 라인 후 개행 문자를 터치 그래서 정규식 ^.*li.*$로 교체 @ataylor's answer에 따라, 빈 줄을 생산할 예정하지 않습니다 \s-^.*li.*$ 또는 ^.*li.*$\s-은 작동하지 않습니다. 참고로 \s-은 공백 문자 (공백, 탭, 줄 바꿈 및 캐리지 리턴)와 일치하므로 줄 바꿈 문자는 ^ 이하 또는 $ 앞에 오는 유일한 공백 문자이므로 직관적으로 정규식이 줄 바꿈을 삭제해야합니다. 정확하게 개행 문자를 매치 시키려면 기본값으로 C-q C-j으로 입력해야합니다. 이맥스는 자주 ^J과 같은 별도의 글꼴 색상으로 개행을 나타내며, ^J의 순서는 아니지만 한 문자 만주의하십시오. 입력 할 조금 짧은

Vladimir 
Ulyanov