必要な単語を含む行を除く、Notepad ++のすべての行を削除しますか?


回答:


292

これを達成する簡単な方法があります。3つのステップを実行する必要があります。

  1. [検索]メニュー> [検索...]に移動し、[マーク]タブを選択します。正規表現を有効にします。を検索します^<Path>^行開始用です)。「ブックマーク行」をチェックして「すべてマーク」を押すことを忘れないでください

    ==>保持したいすべての行にブックマークがあります

  2. 「検索-ブックマーク-逆ブックマーク」メニューに移動します

    ==>削除するすべての行がブックマークされます。

  3. 「検索-ブックマーク-ブックマークされた行を削除」メニューに移動します

    ==>ブックマークされた行はすべて削除されます。


47
+1。いいね、これについて知らなかった。「マークされていない行を削除する」または「マークされた行をカット/コピーする」オプションもあり、時間を節約できます。
deizel

6
Notepad ++のバージョン(6.2.3)には「Mark Tab」という名前のメニュー項目がないため、最初は問題がありました。代わりに、[検索]-> [検索...]-> [マーク]タブをクリックする必要があります。そして、あなたはもはやブックマークを逆にする必要はありません。Notepad ++には「マークされていない行を削除」する機能が追加されました。しかし、あなたのヒントは私を大いに助けてくれました!ありがとう!
aakoch

22
(少なくともv6.4.5以降)[マークされていない行を削除]を選択できるため、ステップ2をスキップできます。
ジュリアン

4
私は長い間Notepad ++を使用していますが、これまでに「ブックマーク」とは何かを知りませんでした。このツールがどれほどパワフルで、私がそれについて知っているかは驚くほどです。
ダヌビアセーラー14年

あなたは天才です。これは、実際に使用しているツールを知る方法の別の衝撃的な例です。
マルチェログレチリンズ

67

これは、6.3の時点で実際に2つのステップで実行できます。私はそれを最初に試したときに5.9を持っていたので、それよりも早く行うことができると思います。

この答えの基礎として、ステマの投稿を使用します。1つ少ないステップがあります。行をマークし、マークされていない行を削除します。できた 詳細な手順は次のとおりです。

  1. 検索メニュー「検索」。[検索]ダイアログで、[マーク]タブをクリックします。正規表現を有効にします。を検索します^<Path>^行開始用です)。「ブックマーク行」をチェックして「すべてマーク」を押すことを忘れないでください

    ==>保持したいすべての行にブックマークが追加されました

  2. 検索メニュー->ブックマーク->マークされていない行を削除します。

    ==>すべてのNONブックマークし行が削除されます。


3
これには10秒かかりましたが、他のソリューションには20秒以上かかりました。どうも!
ブラック

^検索用語にを追加したり、正規表現を使用したりする必要はありませんでした。これが誰かを助けることを願っています。
sa_leinad

29

正規表現のみの解決策

2ステップバリアント

  1. 正規表現の置き換え

    (?!^.*test.*$)^.+
    

    テストをリクエストしたテキストに置き換えます

  2. 取り替える

    [\r\n]{2,}
    

    \r\n

シングルステップバリアント

^(?!<Path>).*\r\n一致を空の文字列で置き換えるために使用します。一般化バージョンはになります^(?!.*?test).*\r\nこれは、ファイルの最後の空行を削除しません。複数の連続した空行を含む、他のすべての行が削除されます。

説明:

  1. (?!)否定的な見方です。^.*test.*$ 要求されたテキストを含む行全体を選択します。

  2. [\r\n]{2,}\r\nこれがWindowsの新しい行になると、複数回発生するものに一致します Linuxまたは別のオペレーティングシステムを使用している場合、これを台無しにする必要があるかもしれません。2つ目は、1つの戻り行に置き換えることです。


1
人々への注:行末(EOL)の正規表現が「機能しない」ことがあります。\r\n記事で言及したEOLは、Windowsが使用するものであるためか、あなたが探しているものであってもなくてもよいです。多くの場合、Linux環境では単に\n、またはMac環境ではちょうど\rです。どちらからファイルをプルしても、WindowsスタイルのEOLにはなりません。あなたはFileZillaを経由してダウンロードし、ASCIIモードがトリガーしかし、もし、それがそれらを変更することがあり再度Windows EOLへの(のよう\n\r\n)。したがって、正規表現が機能しない場合は、[表示]> [シンボルの表示]> [行末の表示]に移動してEOLスタイルを確認します。CR = \r。LF = \n
ダウピン16

5

最も簡単な方法は、「現在のドキュメントですべてを検索」機能を使用して、結果を新しいファイルにコピーするか、すべてを選択して現在のファイルで置換することです。

これにより、テキストを含むすべての行が検索され、下部にリストされます。検索結果を右クリックして、コピー/貼り付けします。


を置き換えて行番号を削除する必要があり\tLine [\d]*: ます。まだ素晴らしい答えです。
ヌメノン

これは、Notepad ++が検索結果ウィンドウで切り捨てるほど幅が広い行では機能しません。
MasterJoe2

4

メニュー検索 -> 検索 ...->正規表現を有効にします。「^ Path」を検索します(^は行開始用です)。

[現在のドキュメント内のすべてを検索]ボタンをクリックします。

[検索結果]ウィンドウが表示され、パターンのすべての行が表示されます。Notepad ++の新しいタブにコピー/貼り付けを選択します。

この新しいタブでは、メニュー検索 -> 置換...- >正規表現を有効にします。

「Find what:」フィールドで、パターン「Line \ d +:」を使用します。[置換]フィールドは空白のままにします。

[すべて置換]ボタンをクリックします。


3

<Path>ファイルシステムパスではなく、実際に一致させたい場合は、Perlを使用してコマンドラインからこれを試すことができます。

perl -pe " if ($_ !~ /<Path>/) { s/$_// } " < in.txt > out.txt

Windows上のStrawberry Perlで動作するため、結果が予想と異なる場合は適宜調整してください。


3

不器用ですが、すべてをExcelにコピーしてから、=IF(LEFT(A1,6)="<Path>",A1,"")その式を使用してコピーします。次に、それをNotepad ++にコピーして戻します。理想的ではありませんが、非常に簡単です(Excelがある場合)。警告:インデントされた行ではうまく機能しません(Excelは列をシフトするなど)。


このタスクを直接処理する方法がいくつかある場合、なぜ別のアプリケーションに破壊的にコピーし、そこで処理し、転送する必要があるのでしょうか?
Baldrickk

1

Notepad ++でやりたいことをする簡単な方法はありません。プログラムをコンピューターにダウンロードするか、VBでスクリプトを作成する必要があります(Windowsを使用していると仮定します)。

sedを使用すると、2つの方法のいずれかを実行できます。sedユーティリティは* nixのお気に入りであり、Windowsの場合はGnuWin(http://gnuwin32.sourceforge.net/packages/sed.htm)のすばらしい人々から入手できます。このプログラムをダウンロードし、コマンドプロンプトからコマンドを実行します。

を含まないすべての行を削除します。
sed -i '/^<PATH>/!d' file

含むすべての行を新しいファイルに印刷します。
sed -n '/^<PATH>/p' file > newfile

新しいファイルに必要な行を印刷することをお勧めします。その理由は、おそらく最初に正規表現ステートメントを取得できないからです。sedユーティリティは、正規表現の基本構文を使用しますhttp://www.regular-expressions.info/reference.htmlのリファレンスを参照)。が* nixパス(/ var / www)のようなものである場合、正規表現が機能するには/文字をエスケープする必要があります。

例:sed -n '/^\/var\/www/p' file > newfile
これは、「/ var / www」で始まるすべての行を出力します。/文字をエスケープするように申請した場合、コマンドはエラーをスローします。バックスラッシュ文字\を使用して、特殊文字(/など)をエスケープできます。


これは古い答えかもしれませんが、実際には信じられないほど2票(私から-1票)を持っているので、それがいかに間違っているかだけでなく、私が(再び)100k行を超えた方法をSINGLEコマンド操作で繰り返したいと思いましたこの場合、この正規表現をFIND WHAT:^(?!。*?error)。* \ r \に配置するだけで、3秒未満で1つの単語(またはフレーズ)を含む34行までログファイルが記録されます。 nおよびREPLACE WITH空白のままにし、「。matches newline」を選択せず​​に「REPLACE ALL」をクリックします。はい、sedとawkも大好きですが、NPPでこれができないと言うのは間違っています。
コリンチャフィン

1

正規表現置換によるより良いソリューション:

(?!^.*SOMETEXT.*$)^.+\r?\n

そして何も置き換えない


1
スーパーユーザーへようこそ!正規表現の各ビットが何をするのか分からないかもしれない人のために、これを説明するように気をつけますか?:)
ベルティエブ

0

Search-> Replaceを使用して、などの正規表現を入力し、を使用^[^ ].*してすべてを空の文字列に置き換えますRegular expression。次のステップは、空行が探して見つけることである\n\nと置き換える\n使用Extendedされるまで複数回0 occurrences were found.(使用\r\n\r\nし、\r\nファイル形式に応じて)。行に非常に多くの空の行がある場合は、検索文字列で\n\n\n\n\n\n\nさらに多くの\n:s を使用する方が迅速です。

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