linux - 计算有多少个文件有字符串

标签 linux bash unix grep

这是一项作业,因此请为我指明正确的方向。

我有一堆消息文件。每条消息都会发送给某人,因此每个文件都将包含一个字符串,例如“收件人:John Smith”、“收件人:Jane Doe”......

我想计算发送给每个人的文件数量并打印

我知道我们可以计算有多少个文件包含一个名称

grep -lr "name" directoryPath | wc -l

问题:

我不确定如何在计算邮件数量之前找到每个唯一的收件人。

我想我也许可以制作一个临时文件来存储姓名和计数,这样我就可以每次检查收件人是否是新的。我确信有更好的方法

最佳答案

您收到的评论包含完成此作业所需的内容。以下是将它们组合在一起的方法:

grep -hr To: directoryPath | sort  | uniq -c 

grep 将搜索 DirectoryPath 及以下的所有文件中包含“To:”的行并显示它们。 -r 指示 grep 递归搜索所有目录,而 -h 则抑制 grep 输出中的文件名。

我们必须使用排序将所有相同的名称放在一起。这设置了由 uniq -c 计数的输出(这需要对输入进行排序以满足您的要求)。

在不使用管道的情况下尝试上述命令以了解输出是什么。例如,试试这个:

grep -r To: directoryPath

并将其与此进行比较:

grep -hr To: directoryPath

然后尝试看看在不进行排序的情况下使用 uniq -c 会发生什么:

grep -hr To: directoryPath | uniq -c

或者尝试独特的排序功能,看看它如何影响结果:

grep -hr To: directoryPath | sort  -u

简而言之,如果您想学习这些 Material ,请尝试使用各种参数,看看为什么答案有效。

顺便说一句,我还没有测试过我对你的回答。大多数发帖人都会用测试数据和预期结果示例来提出他们的问题。然后发帖者可以确认他们的解决方案正确回答了问题。在这种情况下,我只是根据我的经验对您的需求进行猜测。

关于linux - 计算有多少个文件有字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53139394/

相关文章:

java - 在 Selenium Grid 上执行测试时,无论操作系统如何(Windows 或 Unix),如何从项目文件夹上传文件

linux - 用于压缩文件夹并将其复制到另一个安装点的 Shell 脚本

linux - bash 中的脚本错误

ruby - 如何在 Linux 中将命令作为 Ruby 脚本运行?

linux - 搜索多个 php 文件,并替换文本?

bash - 在运行时为 docker 容器设置环境变量

Bash 变量 - 在变量末尾嵌入换行符

linux - 如何用shell函数制作 "dictionary"?

c - C 中的语法错误

linux - 从 bash 脚本运行 sudo 而又无法以特权运行脚本的最佳方法是什么?