如何计算 AIX 上每个文件的正则表达式匹配总数
Posted
技术标签:
【中文标题】如何计算 AIX 上每个文件的正则表达式匹配总数【英文标题】:How to count total number of matches of regular expression per file on AIX 【发布时间】:2015-07-18 23:29:13 【问题描述】:Grep
通常用于显示包含指定模式匹配的行。 AIX 中是否有任何方法可以显示搜索到的每个文件中模式的匹配总数?也就是说,每一行中的每一个匹配都应该被计算在内。
我试过grep -c pattern filename
,但它只计算每个匹配行一次,无论它包含多少匹配项。
【问题讨论】:
与论坛网站不同,我们不使用“谢谢”、“任何帮助表示赞赏”或Stack Overflow 上的签名。请参阅“Should 'Hi', 'thanks,' taglines, and salutations be removed from posts?. 你想要什么输出?每个新的匹配字符串都在新行上?或者类似于每个匹配行的匹配数?或者只是每个文件的匹配总数? 我只想要每个文件的匹配总数。 【参考方案1】:grep -o foo filename.txt | wc -l
【讨论】:
【参考方案2】:在此文件中找到 3 次出现的 b.
:
$ cat file
a bc d be f
bg h
$ awk 'c+=gsub(/b./,"") ENDprint c+0' file
3
以上内容适用于任何操作系统上的任何 awk(当然,旧的、损坏的 awk 除外)。
【讨论】:
【参考方案3】:你需要先匹配模式,然后计算匹配的数量。
-o 开关将在新行上产生每个匹配项。
然后只计算总行数。
类似:
grep -o pattern filename | wc -l
【讨论】:
您在哪个版本的 AIX 上测试过这个?在 7.1 上不受支持。以上是关于如何计算 AIX 上每个文件的正则表达式匹配总数的主要内容,如果未能解决你的问题,请参考以下文章
powershell Get-Matches()获取所有正则表达式匹配。回答问题“我如何遍历文本文件并打印每个林的所有匹配的正则表达式组
正则进阶之,回溯, (贪婪* 非贪婪+? 独占++)三种匹配量词