正则expression式:删除包含的行

我有一个很长的命令文件。 使用记事本++或正则expression式,我想删除所有包含“帮助”,包括keyboard_help等行

如何才能做到这一点?

记事本+ +也可以这样做

  • 转到search菜单Ctrl + F并打开"Mark"选项卡。
  • 选中"Bookmark line" (如果当前版本没有"Mark"标签更新)。

  • input您的search字词,然后点击"Mark All"

    • 包含search词的所有行都被标记为书签。
  • 现在进入菜单"Search -> Bookmark -> Remove Bookmarked lines"

  • 完成。

Notepad ++中的另一种方法是在查找/replace对话框中使用正则expression式:

  • 按Ctrl + h来调出查找replace对话框。

  • 在“ Find what:文本框中包含您的正则expression式: .*help.*\r?\n (其中,在文件没有Windows行结尾的情况下, \r是可选的)。

  • 将“ Replace with:文本框留空。

  • 确保selectsearch模式区域中的正则expression式单选button。 然后点击Replace All ,瞧! 包含您的search字词help所有行都已被删除。

如何在N +代行换行

grep轻松完成任务:

 grep -v help filename 

追加> newFileName将输出redirect到一个新文件。


更新

为了澄清它,正常的行为将在屏幕上打印行。 要将其pipe道化为文件,可以使用> 。 因此,在这个命令中:

 grep -v help filename > newFileName 
  1. grep显然是调用grep程序
  2. -v是反转输出的标志。 通过defaulf, grep打印与给定模式匹配的行。 有了这个标志,它会打印出与模式匹配的行。
  3. help是匹配的模式
  4. filename是input文件的名称
  5. >将输出redirect到以下项目
  6. newFileName输出将被保存的新文件。

正如你可能注意到的,你不会删除文件中的东西。 grep将读取它,另一个文件将被保存,相应地修改。

您可以使用sed: sed '/help/ d' < inputFile > outputFile来执行此操作

如果您在Windows上,请尝试findstr ,不需要第三方工具:

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

它也支持正则expression式! 只需阅读该工具的帮助文件findstr /?

PS如果你想使用巨大的文件(比如400mb的日志文件),那么文本编辑器的内存效率就不高,因此,正如已经指出的那样,命令行工具是最好的select。 但是窗户上没有grep,所以…

只需要在1GB的日志文件上运行这个文件,就会花费3秒钟的时间。