所以我有一个大文件,位于由城市组成的列中。我想编写一个程序来查找每个城市的实例总数并将其显示在一个新文件中。我该怎么做呢。
这是一个例子,还有比这个更多的值
如果文件是这样的
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 内置命令sort
和uniq
:
cat DATAFILE | sort | uniq --count
这会给你类似的东西:
2 Chennai
1 City
1 Cork
2 Manhattan
解释:这使用的命令uniq
通常会删除重复的行,只保留一个实例。使用选项“--count”,它会发出额外的重复次数计数。为了uniq
工作,需要对行进行排序 - 否则重复项将不会根据需要出现在连续行中。 sort
正是这样做的,按字母顺序对行进行排序。
您需要以不同的列顺序排列这些内容吗?第一行必须被忽略吗?如果是这样,还请告知我们城市名称中是否可能包含多个单词。