2012-12-06 67 views
2

我有多個線條如文本文件:與特定文字刪除線

amanda: foo 
robert: bla 
amanda: bar 
peter: da 

我想刪除所有的線,amanda。我使用ctrl-s並單獨殺死每條線。是否可以一次刪除所有行?

回答

6

M-x delete-matching-lines。可以使用正則表達式。

+2

又名'齊平安lines',這是一種位較短鍵入:

因此刪除包含li一個線,可以在串^.*li.*^J,其中^J是換行運行命令query-replace-regexp。 – Sean

+0

您可能想詳細說明您的答案,以使其更加完整,例如,說明任一命令適用於點或區域之後的緩衝區部分,並且適用於該示例的正則表達式是'^ amanda。* '。 –

1

一種方法是將query-replace-regexp與正則表達式^.*amanda.*$一起使用爲空字符串。

1

雖然@Marcos's answer是慣用的(你應該使用它),讓我們來探索其他變體。比方說,你有一個文本緩衝區,這是你希望刪除包含li行:

Vladimir 
Ilich 
Ulyanov 

記住,^比賽開始線和正則表達式行$結束。 $行後不接觸換行符,所以用正則表達式^.*li.*$替代會產生一個空行,按@ataylor's answer

Vladimir 

Ulyanov 

出於某種原因,這是不可能^之前匹配和$在正則表達式之後,因此\s-^.*li.*$也不^.*li.*$\s-將無法​​正常工作。注意,\s-匹配任何空白字符(即空格,製表符,換行符和回車符),因此直覺上正則表達式也應該刪除換行符,因爲換行符是^之前或$之後唯一可能的空格字符。要完全匹配換行符,您應該逐字輸入,默認爲C-q C-j。 Emacs經常用單獨的字體顏色表示換行符爲^J,它不是^J的序列,而是單個字符,請注意。

Vladimir 
Ulyanov