正则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
所有行都已被删除。
用grep
轻松完成任务:
grep -v help filename
追加> newFileName
将输出redirect到一个新文件。
更新
为了澄清它,正常的行为将在屏幕上打印行。 要将其pipe道化为文件,可以使用>
。 因此,在这个命令中:
grep -v help filename > newFileName
-
grep
显然是调用grep
程序 -
-v
是反转输出的标志。 通过defaulf,grep
打印与给定模式匹配的行。 有了这个标志,它会打印出与模式不匹配的行。 -
help
是匹配的模式 -
filename
是input文件的名称 -
>
将输出redirect到以下项目 -
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秒钟的时间。