正则表达式:删除包含的行

duk*_*vin 355 regex notepad++

我有一个很长的命令文件.使用notepad ++或regex,我想删除所有包含"help"的行,包括keyboard_help等.

如何才能做到这一点?

ste*_*ema 910

使用Notepad ++也可以实现这一点

  • 转到搜索菜单Ctrl+ F并打开__CODE__选项卡.
  • 检查__CODE__(如果__CODE__当前版本没有选项卡更新).

  • 输入您的搜索字词,然后点击 __CODE__

    • 包含搜索词的所有行都有书签.
  • 现在进入菜单 __CODE__

  • 完成.

  • 是啊!它还有'删除未标记的行',就像grep一样,正是我需要的! (34认同)
  • 这是有史以来最好的事情. (7认同)
  • 谢谢,这是一个巧妙的伎俩.我宁愿通过一些简单的点击完成它,而不是启动一个Unix控制台(忽略我主要在Windows上),`cd`到路径中,并键入一个复杂的命令(担心语法和关于搞砸了)永久地意识到没有备份).[_不要误解我的意思,_我总是使用控制台命令来处理其他事情,但对于类似这样的事情,这只是一种矫枉过正.] (5认同)
  • 检查"BOOKMARK LINE"在这里很重要,否则它将无法正常工作! (3认同)
  • 这对我不起作用,书签行不要删除 (3认同)
  • 您可以直接按“Ctrl + M”,而不是“Ctrl + F”并单击“标记”选项卡 (3认同)

Ooz*_*ter 177

在Notepad ++中执行此操作的另一种方法是在"查找/替换"对话框中使用正则表达式:

  • Ctrl+调h出查找替换对话框.

  • Find what:文本框中包含您的正则表达式:( 如果文件没有Windows行结尾.*help.*\r?\n,\r则为可选项).

  • Replace with:文本框保留为空.

  • 确保选中"搜索模式"区域中的"正则表达式"单选按钮.然后点击Replace All瞧!包含搜索字词的所有行help都已删除.

如何在N ++中替换行

  • 比使用标记选项卡更好的答案,因为这可以为"在文件中查找"完成 (17认同)
  • 确保取消选中".match newline" (4认同)
  • 确保使用反斜杠转义括号等特殊字符. (2认同)

sid*_*yll 17

轻松完成任务grep:

grep -v help filename
Run Code Online (Sandbox Code Playgroud)

附加> newFileName到将输出重定向到新文件.


更新

为了澄清它,正常的行为是在屏幕上打印线条.要将它管道传输到文件,>可以使用它.因此,在此命令中:

grep -v help filename > newFileName
Run Code Online (Sandbox Code Playgroud)
  1. grepgrep显然,调用程序
  2. -v是反转输出的标志.通过defaulf,grep打印与给定模式匹配的行.使用此标志,它将打印与模式匹配的行.
  3. help 是匹配的模式
  4. filename 是输入文件的名称
  5. > 将输出重定向到以下项目
  6. newFileName 将保存输出的新文件.

您可能已经注意到,您不会删除文件中的内容.grep将读取它,另一个文件将被保存,相应地修改.

  • @Kevin Duke:正如我之前在答案中所说,输出可以重定向.标准行为是在屏幕上打印.要重定向,你使用一个管道(在这种情况下为`>`),给出一个`grep -v help filename> outputFileName的最终命令 (2认同)

小智 14

使用正则表达式搜索:

^.*(help).*$
Run Code Online (Sandbox Code Playgroud)

  • 删除部分呢? (2认同)
  • @PeterMortensen 找到 `\n\n`,替换为 `` (什么都没有) (2认同)

Tik*_*vis 13

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

  • @CengizFrostclaw:在Linux/Mac/Whatever上的命令行.如果你在Windows上,你必须安装类似CygWin的东西并使用它. (4认同)
  • @CengizFrostclaw:我觉得`sed'/ ^ help/d'`应该可行.`^`表示该行的开头. (3认同)

Ale*_*lex 6

如果你在Windows上的尝试findstr,没有第三方工具的需要:

findstr /V /L "searchstring" inputfile.txt > outputfile.txt
Run Code Online (Sandbox Code Playgroud)

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

PS如果你想使用大的,巨大的文件(如400mb日志文件),文本编辑器的内存效率不是很高,因此,正如有人已经指出的那样,命令行工具是可行的方法.但窗户上没有油灰,所以......

只需在1GB的日志文件上运行它,它就花了3秒钟.