如何找到每个文本的实例数?

如何找到每个文本的实例数?

所以我有一个大文件,位于由城市组成的列中。我想编写一个程序来查找每个城市的实例总数并将其显示在一个新文件中。我该怎么做呢。

这是一个例子,还有比这个更多的值

如果文件是这样的

City           
Manhattan   
Cork       
Manhattan  
Chennai
Chennai

输出应该是什么样子

City
Manhattan 2 
Cork      1
Chennai   2

答案1

使用以下方式datamash

datamash -g1 -s -H count 1 < infile

输出:

GroupBy(City)   count(City)
Chennai 2
Cork    1
Manhattan   2

答案2

使用 Linux 内置命令sortuniq

cat DATAFILE | sort | uniq --count

这会给你类似的东西:

  2 Chennai
  1 City           
  1 Cork       
  2 Manhattan

解释:这使用的命令uniq通常会删除重复的行,只保留一个实例。使用选项“--count”,它会发出额外的重复次数计数。为了uniq工作,需要对行进行排序 - 否则重复项将不会根据需要出现在连续行中。 sort正是这样做的,按字母顺序对行进行排序。

您需要以不同的列顺序排列这些内容吗?第一行必须被忽略吗?如果是这样,还请告知我们城市名称中是否可能包含多个单词。

相关内容