次のような複数行のテキストファイルがあります。
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
. 正規表現を使用することが可能です。
@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
1 つの方法は、空の文字列に対してquery-replace-regexp
正規表現を使用することです。^.*amanda.*$