我有一个如下所示的文件:
o99 克萨德<选项卡>ABCDE $%!H$!(<选项卡>00 !sdaf 作为<选项卡>12 萨尔瓦 &!§! &%
(在哪里<tab>
代表真正的 TAB 字符)。
为了澄清:它包含两个“列”,第二个可能完全是空的,第一个可能包含空格和各种符号。例如,上面示例输入中的最后两行在第二列中不包含任何内容。各列由制表符分隔。
我正在寻找一种方法来查找第一列中最常见的字符串。输出可以是(最好)按此频率排序的文件,也可以是按顺序列出最常见数字字符串的单独输出文件。
我正在使用Linux。
答案1
cut -f1 file | sort | uniq -c | sort -rn
cut
使用TAB作为默认字段分隔符;-f1
选择第一个字段。uniq -c
计算(连续)重复的次数,sort -rn
对数字顺序进行反向排序。
\谢谢{杰夫·夏勒}
答案2
强制awk解决方案
awk -F"\t" '{column[$1]++}END{for (var in column) print column[var]"\t"var}' INPUTFILE.txt | sort -nr -k1