如何计算 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 上每个文件的正则表达式匹配总数的主要内容,如果未能解决你的问题,请参考以下文章

Javascript如何判断一个变量是数字类型?

powershell Get-Matches()获取所有正则表达式匹配。回答问题“我如何遍历文本文件并打印每个林的所有匹配的正则表达式组

AIX 上的 sed 正则表达式问题(第 2 部分)

正则进阶之,回溯, (贪婪* 非贪婪+? 独占++)三种匹配量词

使用 linux 和 AIX 的正则表达式替换 bash 脚本中的字符串

正则表达式如何匹配空值?