正则表达式:删除包含“帮助”等的行


371

我的命令文档很长。我想使用Notepad ++或regex,删除所有包含“ help”的行,包括keyboard_help等。

如何才能做到这一点?

Answers:


945

使用Notepad ++也可以:

  • 转到搜索菜单Ctrl+ F,然后打开“ 标记”标签。
  • 检查书签行(如果没有标记选项卡更新到当前版本)。

  • 输入搜索词,然后单击全部标记

    • 包含搜索词的所有行都被标记为书签。
  • 现在转到菜单搜索书签删除书签的行

  • 做完了


36
是的 它还具有“删除未标记的行”,就像grep一样,正是我所需要的!
克洛伊(Chloe)2012年

6
谢谢,这是一个巧妙的把戏。我宁愿单击几下就可以完成操作,而不是将Unix控制台(忽略我主要在Windows上)启动,cd进入路径并键入一个复杂的命令(担心语法,担心永久搞砸,然后意识到没有备份)。[ 不要误会我的意思,我一直在使用控制台命令做其他事情,但是对于这样的事情,这只是一个过大的
杀手

2
只是节省了我很多时间:-)
Brlja

3
检查BOOKMARK LINE在这里很重要,否则将无法正常工作!
HaSeeB MiR

1
@AndrewSchultz,对不起,但没有。
斯玛

187

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

  • Ctrl+ h弹出查找替换对话框。

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

  • Replace with:文本框留空。

  • 确保选中“搜索模式”区域中的“正则表达式”单选按钮。然后单击Replace All,瞧!包含搜索词的所有行help均已删除。

N ++中的行替换方法


17
比使用标记选项卡更好的答案,因为可以对“查找文件”完成此操作
2014年

2
确保使用反斜杠转义括号等特殊字符。
Noumenon

4
确保取消选中“
。match

1
更高的性能,更好的答案。对于超过1百万行的文件,在现代机器上,书签方法都可以最大程度地扩展。
罗兰·艾丁格

17

轻松完成任务grep

grep -v help filename

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


更新资料

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

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

您可能会注意到,您将不会删除文件中的内容。grep将读取它,并保存另一个文件,并进行相应的修改。


@凯文·杜克:las!这可能意味着您尚未grep安装。无论如何,我建议您安装GNU grep,它肯定会在Windows上运行,这是一个非常有用的工具。
sidyll

@sidyll它知道grep的是,它做了一大堆的输出,它可能是因为我没有指定输出文件
柠檬

2
@Kevin Duke:正如我在答案中前面所说的,可以重定向输出。标准行为在屏幕上打印。要进行重定向,请使用管道(>在这种情况下),并给出grep -v help filename > outputFileName
sidyll

谢谢,我一定会尝试的!
柠檬

grep> sed在一周的任何一天查找字符序列
kwikness

13

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


4
@CengizFrostclaw:在Linux / Mac /任何版本的命令行上。如果您使用的是Windows,则必须安装CygWin之类的东西并使用它。
Tikhon Jelvis,2014年

谢谢@TikhonJelvis!最后一个问题,我们可以使用sed'help /'删除所有以help 开头(不包含)的行吗?
2014年

3
@CengizFrostclaw:我认为sed '/^help/ d'应该起作用。该^代表行的开始。
Tikhon Jelvis,2014年

@jeff PowerShell有sedgrep
Ooker

cygwin可能无法在带有utf-16文件的Windows上运行。Cygwin实用程序默认使用UFT-8。其中很少支持UTF-16。使用babun babun.github.io。它充当cygwin的包装,但提供了许多现成的东西。
萨希尔·辛格


6

如果您使用Windows,请尝试findstr。不需要第三方工具:

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

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

PS。如果您想与大,工作巨大的文件(如400 MB日志文件)文本编辑器是不是很节省内存,所以,正如有人已经指出的那样,命令行工具是要走的路。但是Windows上没有grep,所以...

我只是在一个1 GB的日志文件上运行了它,实际上花了3秒钟。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.