我有一个名称列表,每行一个名称另存为.txt文件。

我正在尝试使用bash来确定一次,两次或三次出现多少个不同的名称。

例如:

names.txt看起来像

Donald
Donald
Lisa
John
Lisa
Donald

在这种情况下,唯一行的数量为1,有1个重复行,并且1个名称出现3次。我正在尝试使用uniq将这些金额放在更大的列表中。我知道我可以将uniq -uuniq -d用于唯一性和重复项,但是我不确定如何使用出现3次的名称进行操作。

最佳答案

$ echo 'Donald
Donald
Lisa
John
Lisa
Donald' | sort | uniq -c | awk '{print $1}' | sort | uniq -c
   1 1
   1 2
   1 3

右列是重复计数,左列是具有该重复计数的唯一名称的数量。例如。 “Donald”的重复计数为3。

更大的例子:
echo 'Donald
Donald
Rob
Lisa
WhatAmIDoing
John
Obama
Obama
Lisa
Washington
Donald' | sort | uniq -c | awk '{print $1}' | sort | uniq -c
   4 1
   2 2
   1 3

四个名称(“Rob”,“WhatAmIDoing”,“John”和“华盛顿”)的重复计数均为1。两个名称(“Lisa”和“Obama”)的重复计数均为2。一个名称( “Donald”)的重复计数为3。

关于linux - 如何计算唯一行,重复行以及在文本文件中出现三次的行的数量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37037420/

10-10 17:41