正規表現:「ヘルプ」などを含む行を削除


372

コマンドの長いドキュメントがあります。Notepad ++またはregexを使用して、keyboard_helpなど、「help」を含むすべての行を削除したい。

これはどのように行うことができますか?

回答:


946

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

  • 検索メニューCtrl+ Fに移動し、[ マーク ]タブを開きます。
  • ブックマーク行をチェックします(現在のバージョンへの[ マーク ]タブの更新がない場合)。

  • 検索語句を入力して[ すべてマーク ]をクリックします

    • 検索語を含むすべての行がブックマークされます。
  • 次にメニューに移動します検索ブックマークブックマークされた行を削除

  • できました。


36
うん!また、grepのような「マークされていない行を削除」もあり、まさに私が必要とするものです!
クロエ

6
おかげで、これはきちんとしたトリックです。Unixコンソールを起動して(ほとんどがWindowsであることを無視して)数回クリックするだけでcdパスを取得し、複雑なコマンドを入力します(構文について心配し、永続的にねじ込んでから実現する)バックアップはありません)。[
誤解

2
たくさんの時間を節約してくれました:-)
Brlja

3
チェックBOOKMARK LINEはここで重要です。それ以外の場合は機能しません!。
HaSeeB MiR 2018

1
@AndrewSchultz、申し訳ありませんが、ありません。
stea

187

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

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

  • ではFind what:、テキストボックス、あなたの正規表現が含まれています.*help.*\r?\n(ここで、\rファイルは、Windowsの行末を持っていない場合には省略可能です)。

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

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

N ++での行の置換方法


17
「ファイル内を検索」で実行できるため、マークタブを使用するよりも適切な回答
Alex

2
かっこなどの特殊文字はバックスラッシュでエスケープしてください。
Noumenon 2017年


1
パフォーマンスが高いため、より良い答え。100万行を超えるファイルの場合、ブックマーク方法は最新のマシンでも最大に拡張されます。
Roland Ettinger

17

簡単なタスクgrep

grep -v help filename

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


更新

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

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

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


@ケビンデューク:ああ!それはおそらくあなたがgrepインストールしていないことを意味します。とにかく、GNU grepをインストールすることをお勧めします。これは確かにWindowsで動作し、本当に便利なツールです。
シディル

@sidyllそれはgrepが何であるかを知っていて、大量の出力を行いました。出力ファイルを指定しなかったためかもしれません
レモン

2
@Kevin Duke:回答の最初で述べたように、出力はリダイレクトできます。標準的な動作は、画面への印刷です。リダイレクトするには、パイプ(>この場合)を使用し、最後のコマンドgrep -v help filename > outputFileName
sidyll

よろしくお願いします!
レモン

grep>文字列の
検索

13

これは、sedを使用して行うことができます。 sed '/help/ d' < inputFile > outputFile


4
@CengizFrostclaw:Linux / Mac / Whateverのコマンドライン。Windowsを使用している場合は、CygWinなどをインストールして使用する必要があります。
Tikhon Jelvis 14年

ありがとう@TikhonJelvis!最後の質問ですが、sed 'help /'を使用して、ヘルプで始まる(含まない)行をすべて削除できますか?
jeff 2014年

3
@CengizFrostclaw:うまくいくと思いますsed '/^help/ d'^行の先頭を表します。
Tikhon Jelvis 14年

@jeff PowerShellにはsedandgrep
Ooker '31 / 10/31

cygwinは、utf-16ファイルのあるウィンドウでは機能しない場合があります。CygwinユーティリティはデフォルトでUFT-8を使用します。UTF-16をサポートするものはほとんどありません。babun babun.github.ioを使用します。それはcygwinのラッパーとして機能しますが、箱から出してたくさんのものを提供します。
Sahil Singh


6

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

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

正規表現にも対応!ツールのヘルプを読むだけですfindstr /?

PS大きくて巨大な作業をしたい場合(400 MBのログファイルのような)ファイルのテキストエディタは、誰かがすでに指摘したように、コマンドラインツールが移動するための方法です、非常にメモリ効率的ではありません。しかし、Windowsにはgrepがないため、...

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

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