テキストファイルを持っているのですが、<Path>
で始まる行はそのままにして、それ以外の行はすべて削除したいのですが、どうすればいいでしょうか?
どうすればいいですか?
233 None 2011-05-29
簡単な方法があります。2つのステップを行う必要があります
検索メニューから検索… > 「マーク」タブを選択します。正規表現を有効にします。
^<Path>
を検索します(^
は行頭です)。行をブックマークする」にチェックを入れて、「すべてマーク」を押すことを忘れずに==> ブックマークに登録しておきたい全ての行を表示します
メニュー「検索 – ブックマーク – マークのついていない行を削除」に移動します
==> ブックマークされていない行はすべて削除されます
332 stema 2011-06-03
これは実際には6.3の時点では2段階でできるようになっています。最初に試した時は5.9だったので、それよりも早くできると思います
ステマの投稿を元にしてステップが一つ減りました。線をマークして、マークされていない線を消す。完了。詳しい説明は後ほど
検索メニュー「検索」。検索ダイアログで「マーク」タブをクリックします。正規表現を有効にします。
^<Path>
を検索します(^
は行頭です)。行をブックマークする」にチェックを入れて「すべてマーク」を押すのを忘れずに==> 保持したい全ての行にブックマークが付いています
検索メニュー -> ブックマーク -> マークのない行を削除します
==> ブックマークされていない行はすべて削除されます
68 Recognizer 2013-02-27
クリーンな正規表現のみのソリューション
2つのステップのバリアント
regex replace
(?!^.*test.*$)^.+
テストをリクエストされたテキストに置き換えてください
replace
[\r\n]{2,}
with
\r\n
シングルステップバリアント
一致した文字列を空の文字列に置き換えるには ^(?!<Path>).*\r\n
を使用します。一般化されたバージョンは ^(?!.*?test).*\r\n
です。これはファイルの最後の空行を削除しません。複数の連続した空行を含め、他のすべての行が削除されます
Explanation:
(?!)
は否定的なルックアップです。^.*test.*$
は、要求されたテキストを含む行全体を選択します[\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