如何使用一行代码将文件与linux中的列表进行比较?

时间:2015-02-18 01:26:54

标签: bash

嘿,所以我遇到了另一个困境。我想看看有多少印度人正在使用踩踏计算机。所以我在vim中设置了一个印度txt文件,该文件在印度有大约50个最常见的姓氏,我想将文件中的这些名称与用户名列表进行比较。

到目前为止,这是我的代码

getent passwd | cut -f 5 -d:| cut -f -d' '

getent passwd获取的用户ID列表如下所示 tg827313:x:827313:8144474:Brandon Williams

剪切函数将只获取姓氏,因此示例的输出将为

威廉姆斯

现在可以使用grep函数来比较文件,但是如何使用它来比较getent passwd列表和文件?

1 个答案:

答案 0 :(得分:1)

要计算文件namefile中显示的计算机用户名数,请使用:

getent passwd | cut -f 5 -d: | cut -f -d' ' | grep -wFf namefile | wc -l

如何运作

  • getent passwd | cut -f 5 -d: | cut -f -d' '

    这是您的代码,我将假设它适用于您。

  • grep -wFf namefile

    这将选择与namefile中的行匹配的名称。 -F选项告诉grep不要对名称使用正则表达式。假定名称是固定字符串。选项-f告诉grep从文件中读取字符串。 -w告诉grep仅匹配整个单词。

  • wc -l

    这将返回输出中的行数。