Sublime-特定の値を含むすべての行を削除します


116

SublimeText 3で開くことができる900 MBのログファイルがあります。このファイルは、次のような行で膨らんでいます。

10/08/2014 23:45:31:828,Information,,,,ExportManager: ,No records to send and/or not connected

を含むすべての行をフィルターで除外するにはどうすればよいですか No records to send and/or not connected


以下のソリューションは機能しますが、このタイプのジョブは実際には大きなファイルのsed / awkで実行する必要があります。
バー

回答:


229

あなたは正規表現の検索と置換を行うことができます:

[検索]> [置換]をクリックします。

正規表現ボタンが押されていることを確認します。

Find Whatフィールドには、次のように入力します。

^.*No records to send and/or not connected.*\n

「置換」フィールドは空のままにします。

すべて置換をクリックします


16
最後の完全なストップ/ピリオドは重要です。それがないと機能しません。:別の方法として、あなたは、この使用することができます^.*No records to send and/or not connected\S.*$
Navigatron

このソリューションは、大きなファイルを操作している場合にのみ実行可能なソリューションです。Ctrl+Shift+K200,000行を選択した場合、マシンが数分間スタックしました。
Przemek D 2017

イマは私の26 000 000行のファイルでこれを試してください: ')
YB原因

64

正規表現を書きたくない人のために-検索文字列を選択するctrl+cmd+gか、メニューから「Quick Find All」を押すか選択するだけで、一致する各文字列の選択を取得できます。そこからHomeすべての選択カーソルを行の先頭に移動し、shift+End一致del, delするすべての行を選択して、それらをすべて削除します。

複数カーソル編集が楽しい!


4
これは非常に便利な、より一般的なヒントです。私の目的は、文字列を含むすべての行を削除することでした。Ctrl+Cmd+GLeonidがこれらのすべての文字列を選択することを提案しているので、その1つのインスタンスを選択してから、ショートカット付きの「QuickFind」を使用しました 。この後、「行の削除」に直接進むことができCtrl-Shift-K、この文字列を含むすべての行が瞬時に削除されました。Sublime Textは、私が今まで使った中で最高のテキストエディターです。
MiB

ctrl + cmd + gはWindowsのctrl + alt + gと同じですか?私はこれを機能させることができませんでした
ブラックパンダ

@ブラックパンダfor windows "Quick Find All" is alt + f3-Thanks Leonid +1
Christopher

私と同じようにホームボタンがない場合は、CMD + <-(左矢印)を使用することもできます
Koray Tugay

4
cmd + Lを使用して、選択範囲を行に拡張することもできます。
Koray Tugay

53

正規表現を機能させることができなかったので、この答えからAlt-F3アプローチを使用しました:

/superuser/452189/how-can-i-filter-a-file-for-lines-taining-a-string-in-sublime-text-2/598999#598999

  1. 興味のある文字列を選択
  2. ヒットAlt+ F3すべての出現にマルチカーソルモードに入るために(Ctrl+ CMD+ GのMac OS X上)
  3. ヒットCtrl+ L[コメントを表示](Cmd+ LMacの場合)
  4. 選択範囲を別のバッファにコピーして貼り付ける
  5. Del

2
2つのこと:(1)このような個別の回答にリンクできます(2)ここに他の回答を要約する必要があります(そして、この質問に適切に回答できるように専門化します)。
目立つコンパイラ

4
手順3と4をCTRL + Lで置き換えることができます。これにより、選択範囲が改行を含む行全体に拡張されます。
Chnossos

2
MACキースキームに呪われた私のような人たちの場合:Ctrl+Cmd+Gすべての出現でマルチカーソルを使用し、Cmd+L行を拡張し、通常のコピー/貼り付けを行う
Cyril Duchon-Doris

27

これは私がWindowsユーザーのために見つけたものです:

  1. 文字列を選択します(この文字列を含むすべての行が削除されます)。
  2. Alt + F3キーを押します。
  3. Ctrl + Lを押します。
  4. Deleteキーを押します。

21

上記で提案された正規表現コードはどちらも私の場合は機能しませんでしたが、これは機能しました:

.*(text in question).*

それはあなたのコードに空の行を入れます、あなたがしたいですか?そうでない場合は、末尾\nまたは$末尾に追加し.*(text in question).*\n
ます

行に「abc / xyz / something」のような構造がある場合、正規表現を使用するには '\'を追加します。たとえば、abc /と/ somethingの間で何かを検索する必要がある場合、式は次のようになります。abc /\.*.*\/ something
Avik

私の作品は、私が行ったように複数の一致が必要な場合は、使用し|そうのように:.*(a).*|.*(b).*|.*(c).*
bryc

0

サイトマップの編集で同様の問題が発生しました

これは私のために働きました:

  1. 削除する行の最後の単語をコピーします
  2. すべてを見つける
  3. 行全体を削除するには、Deleteキーを押します

0

上記の答えは正しい方法ですが、単一の文字列でも行を削除したい場合は、「検索」->「置換」-> ^.*[a-zA-Z]+.*\n「検索」セクションに配置し、置換を空白のままにします。[すべて置換]ボタンをクリックすると、単一の文字列が含まれているすべての行が削除されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.