メモ帳++で必要な単語を含む行を除いて、すべての行を削除しますか?

notepad++

テキストファイルを持っているのですが、<Path>で始まる行はそのままにして、それ以外の行はすべて削除したいのですが、どうすればいいでしょうか?

どうすればいいですか?

  233  None  2011-05-29


ベストアンサー

簡単な方法があります。2つのステップを行う必要があります

  1. 検索メニューから検索… > 「マーク」タブを選択します。正規表現を有効にします。^<Path>を検索します(^は行頭です)。行をブックマークする」にチェックを入れて、「すべてマーク」を押すことを忘れずに

    ==> ブックマークに登録しておきたい全ての行を表示します

  2. メニュー「検索 – ブックマーク – マークのついていない行を削除」に移動します

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

332  stema  2011-06-03


これは実際には6.3の時点では2段階でできるようになっています。最初に試した時は5.9だったので、それよりも早くできると思います

ステマの投稿を元にしてステップが一つ減りました。線をマークして、マークされていない線を消す。完了。詳しい説明は後ほど

  1. 検索メニュー「検索」。検索ダイアログで「マーク」タブをクリックします。正規表現を有効にします。^<Path>を検索します(^は行頭です)。行をブックマークする」にチェックを入れて「すべてマーク」を押すのを忘れずに

    ==> 保持したい全ての行にブックマークが付いています

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

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

68  Recognizer  2013-02-27


クリーンな正規表現のみのソリューション

2つのステップのバリアント

  1. regex replace

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

    テストをリクエストされたテキストに置き換えてください

  2. replace

    [\r\n]{2,}
    

    with \r\n

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

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

Explanation:

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

  2. [\r\n]{2,} は、Windows の改行である \r\n と一致します。Linux や他の OS を使用している場合は、これをいじる必要があるかもしれません

31  sonar0m  2013-07-08


一番簡単な方法は、「現在のドキュメントですべてを検索」機能を使って、その結果を新しいファイルにコピーするか、すべてを選択して現在のファイルに置き換えることだと思われます

これは、あなたのテキストを含むすべての行を見つけ、下部にそれらをリストアップします。検索結果を右クリックして、コピー/ペーストしてください

6  Gubbins  2015-12-17


メニューから検索 -> 検索…-> 正規表現を有効にします。パス」を検索します(^は行頭)

現在の文書内のすべてを検索」ボタンをクリックします

結果を探す」ウィンドウには、パターンのすべての行が表示されます。コピー/貼り付けを選択して、メモ帳++で新しいタブに貼り付けます

この新しいタブでは、次のようになりました:メニュー検索 -> Replace…-> 正規表現を有効にします

“Find what:” フィールドでは、パターンを使用します。”Replace with:” フィールドは空白のままにしておきます

すべてを置き換える」ボタンをクリックします

4  Luis  2013-06-21


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

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

Windows上のStrawberry Perlで動作しましたので、期待していた結果と異なる場合は適宜調整してください

3  Joe Internet  2011-05-30


不器用ですが、Excelに全部コピーして、=IF(LEFT(A1,6)="<Path>",A1,"")を使って、その数式を全部コピーします。そして、それをメモ帳++に戻してコピーします。これは理想的ではありませんが、かなり簡単です(Excelがあれば)。警告。インデントされた行ではうまく動作しません(Excelは列をずらすなどしてしまいます)

3  soandos  2011-05-29


メモ帳++を使ってやりたいことをする簡単な方法はありません。コンピュータにプログラムをダウンロードするか、VBで何かをスクリプト化する必要があります(Windowsを使っていると思います)

sed を使うと、2 つの方法のうちの 1 つで好きなことができます。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  Chris Ting  2011-05-30


正規表現の置換でより良い解決策が得られます

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

そして、何もないところに置き換えてください

2  LoneDev  2018-05-01


Search->Replaceを使用して、^[^ ].*のような正規表現を入力し、Regular expressionを使用してすべてを空の文字列に置き換えます。次のステップは、\n\nを検索して\n\n\nに置き換え、Extendedを使って0 occurrences were found.になるまで何度もExtendedを使って空行を探します(ファイル形式によっては\r\n\r\n\r\nを使います)。非常に多くの空行が並んでいる場合は、検索文字列に\n\n\n\n\n\n\n\n:sを使った方が手っ取り早いです

0  AndersTornkvist  2011-05-29


タイトルとURLをコピーしました