正则表达式 - grep、sed、awk - 处理大型文本文件

Posted

技术标签:

【中文标题】正则表达式 - grep、sed、awk - 处理大型文本文件【英文标题】:regular expression - grep, sed, awk - processing large text file 【发布时间】:2021-08-06 03:42:26 【问题描述】:

我一直在使用文本编辑器来完成我的正则表达式工作。它工作得很好,但现在我的示例文件大小为 10GB,所以它会阻塞文本编辑器。

您推荐使用什么,您是否有一些示例或网站可供参考?

我在看这是我发现人们使用它做很多事情的结果

find - 是文件搜索 grep - 是基于行的搜索 awk - 是一种查找和替换搜索 sed - 是一种编程语言搜索

我正在寻找的是:

你可以使用正则表达式:(.*), [a-z] then

文本文件:

some-text-file : threw this cat and then sat on the mat  
some-other-text-file : the quick brown flew free then the fox fell
yet-another-text-file : i hope this explains this and that thoroughly  

渴望

找到以 some 开头的那一行,然后找到“then”,然后从 then 到句子结尾的所有内容 输出主题:如果找到一些,则输入“Some: 如果找到“then”,则在同一行输出显示从该点到句子结尾的所有文本。

正则表达式(哪些可以只输出值而不是使用这种语法修改它?

我也想匹配多行并仅返回匹配文本。

找到: (^some)(.*)(then)(.*) 返回:主题:一些然后:\4

结果:(搜索结果不是文件修改)

Subject: some Result: then sat on the mat  
Subject: some Result: then the fox fell
yet-another-text-file : i hope this explains this and that thoroughly 

【问题讨论】:

第三行怎么匹配?​​ 那么你尝试了什么,你的问题是什么? 在您的示例输入/输出中包含类似they ran then they walked then they sat 的行,以便我们可以查看您是否希望输出从该行的第一个或最后一个then 开始。并修正你的要求,说你想要Subject: some then:Subject: some Result: then,但不是两者兼而有之。 【参考方案1】:

这对任何大小的输入文件都有效:

$ sed 's/^some.*then\(.*\)/Subject: some then:\1/' file
Subject: some then: sat on the mat
Subject: some then: the fox fell
yet-another-text-file : i hope this explains this and that thoroughly

如果这还不是您所需要的,那么请编辑您的问题以阐明您的要求并包括上述不适用的示例输入/输出。

【讨论】:

以上是关于正则表达式 - grep、sed、awk - 处理大型文本文件的主要内容,如果未能解决你的问题,请参考以下文章

文本处理工具之:grep sed awk

awk   sed   grep     正则表达式

正则表达式及三剑客(grep,awk,sed)详解

十七. 正则以及grep ,sed,awk的简单应用

linux三大文件处理工具(grep/sed/awk)

awk的基本用法