2

次のような複数行のテキストファイルがあります。

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

ですべての行を削除したいのですがamanda。私はctrl-s各行を個別に使用して強制終了します。すべての行を一度に削除することは可能ですか?

4

3 に答える 3

6

M-x delete-matching-lines. 正規表現を使用することが可能です。

于 2012-12-06T23:10:41.457 に答える
1

@Marcosの答えは慣用的なものですが(使用する必要があります)、他のバリアントを調べてみましょう。テキスト バッファーがあり、その中に含まれる行を削除したいとしますli

Vladimir
Ilich
Ulyanov

これは、正規表現の^行頭と行末に一致することを覚えておいてください。行の後の改行文字に触れないため、@ataylor の回答に従って、正規表現に置き換えると空の行が生成されます。$$^.*li.*$

Vladimir

Ulyanov

何らかの理由で、正規表現で^前後を一致させることは不可能であるため、機能しません。は任意の空白文字 (つまり、スペース、タブ、改行、キャリッジ リターン) に一致することに注意してください。そのため、直観的に正規表現は改行も削除する必要があります。改行を正確に一致させるには、デフォルトでそのまま入力する必要があります。Emacs は頻繁に改行を別のフォント色で として示します。これはとのシーケンスではなく、単一の文字です。注意してください。$\s-^.*li.*$^.*li.*$\s-\s-^$C-q C-j^J^J

したがって、 を含む行を削除するには、 stringに対してliコマンドを実行できます。ここで、は改行です:query-replace-regexp^.*li.*^J^J

Vladimir
Ulyanov
于 2014-06-07T14:49:23.330 に答える
1

1 つの方法は、空の文字列に対してquery-replace-regexp正規表現を使用することです。^.*amanda.*$

于 2012-12-06T23:11:11.627 に答える