web-dev-qa-db-ja.com

正規表現:を含む行を削除

コマンドの長い文書があります。メモ帳+ +または正規表現を使用して、私はkeyboard_helpなどを含む "help"を含むすべての行を削除したい.

どうすればこれができますか?

335
dukevin

これはNotepad ++でも可能です

  • 検索メニューへ Ctrl+F そして"Mark"タブを開きます。
  • "Bookmark line"を確認してください(現在のバージョンへの"Mark"タブの更新がない場合)。

  • 検索語を入力して"Mark All"をクリックしてください。

    • 検索語を含むすべての行がブックマークされています。
  • 今すぐメニューに移動します"Search -> Bookmark -> Remove Bookmarked lines"

  • 完了しました。

868
stema

Notepad ++でこれを行う別の方法は、すべて検索/置換ダイアログと正規表現を使用することです。

  • Ctrl + h 検索置換ダイアログを表示します。

  • Find what:テキストボックスに正規表現を含めます:.*help.*\r?\n(ファイルにWindowsの行末がない場合、\rはオプションです)。

  • Replace with:テキストボックスは空のままにします。

  • [検索モード]領域の[正規表現]ラジオボタンが選択されていることを確認します。次に[Replace All]をクリックして、出来上がり!検索用語helpを含むすべての行が削除されました。

How-To Line Replace in N++

171
OozeMeister

grepによる簡単な作業:

grep -v help filename

出力を新しいファイルにリダイレクトするには、> newFileNameを追加します。


更新

それを明確にするために、通常の動作は画面に線を印刷することです。それをファイルにパイプするために、>を使うことができます。したがって、このコマンドでは:

grep -v help filename > newFileName
  1. grepgrepプログラムを呼び出します。明らかに
  2. -vは、出力を反転するためのフラグです。デフォルトでは、grepは与えられたパターンに一致する行を表示します。このフラグを使用すると、パターンと一致しない行が表示されます。
  3. helpは照合するパターンです
  4. filenameは入力ファイルの名前です
  5. >は出力を次の項目にリダイレクトします
  6. newFileNameは出力が保存される新しいファイルです。

お気づきかもしれませんが、ファイル内のものは削除されません。 grepがそれを読み、別のファイルが保存され、それに応じて修正されます。

16
sidyll

Sed:sed '/help/ d' < inputFile > outputFileを使ってこれを行うことができます。

13
Tikhon Jelvis

Windowsでしている場合は、findstrを試してください。サードパーティ製のツールは必要ありません。

findstr /V /L "searchstring" inputfile.txt > outputfile.txt

正規表現もサポートしています!ツールのヘルプを読んでくださいfindstr /?

P.S大きくて巨大なファイル(400MBのログファイルなど)を使用したい場合は、テキストエディタのメモリ効率はそれほど高くありません。したがって、既に指摘したように、コマンドラインツールを使用することをお勧めします。しかし、ウィンドウズのgrepはないので、...

これを1GBのログファイルで実行したところ、文字通り3秒かかりました。

6
Alex

正規表現で検索する:

^.*(help).*$

3
Rob Rob