我有多個線條如文本文件:與特定文字刪除線
amanda: foo
robert: bla
amanda: bar
peter: da
我想刪除所有的線,amanda
。我使用ctrl-s
並單獨殺死每條線。是否可以一次刪除所有行?
我有多個線條如文本文件:與特定文字刪除線
amanda: foo
robert: bla
amanda: bar
peter: da
我想刪除所有的線,amanda
。我使用ctrl-s
並單獨殺死每條線。是否可以一次刪除所有行?
M-x delete-matching-lines
。可以使用正則表達式。
一種方法是將query-replace-regexp
與正則表達式^.*amanda.*$
一起使用爲空字符串。
雖然@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
又名'齊平安lines',這是一種位較短鍵入:
因此刪除包含
li
一個線,可以在串^.*li.*^J
,其中^J
是換行運行命令query-replace-regexp
。 – Sean您可能想詳細說明您的答案,以使其更加完整,例如,說明任一命令適用於點或區域之後的緩衝區部分,並且適用於該示例的正則表達式是'^ amanda。* '。 –