计算有字符串的文件数

时间:2018-11-04 09:32:48

标签: linux bash unix grep

这是一项作业,所以请指向正确的方向。

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

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

我知道我们可以用多少个文​​件包含一个名字

grep -lr "name" directoryPath | wc -l

问题:

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

我当时想我可以制作一个临时文件来存储名称和计数,以便我可以每次都检查收件人是否是新来的。我肯定还有更好的方法

1 个答案:

答案 0 :(得分:1)

您收到的评论包含回答此作业所需要的内容。将它们组合在一起的方法如下:

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

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

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

在没有管道的情况下尝试上述命令以了解输出内容。例如,尝试以下方法:

grep -r To: directoryPath

并将其与此进行比较:

grep -hr To: directoryPath

然后尝试查看没有排序的uniq -c会发生什么:

grep -hr To: directoryPath | uniq -c

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

grep -hr To: directoryPath | sort  -u

简而言之,如果您想学习这些材料,请尝试各种参数,并查看答案为何有效。

顺便说一句,我还没有测试过对您的回答。大多数张贴者用测试数据和示例预期结果来提出他们的问题。然后张贴者可以确认其解决方案正确回答了问题。在这种情况下,我只是想告诉您您需要什么。