我有一个文件logs.txt,上面有重复的数字:
1 QWE
1 ASD
1 QWE
1 QWE
1 QWE
1 qwe
12
22 qwe
2 aaa
2 vcc
2 xxx
4 asa
44 qwe
4 gfd
4 bcx
5
6 kuy
7
76 lol
5
4 ggg
23
2 ttt
34
5
5
76
5
6
78
99
8
88
7
6
88
88
88
88 wer
88 tyu
99 dsf
78 dfg
78 fgh
78
78 qwe
6 qwe
5
22 qwe 我得把它们分类。所以最高的应该在上面。例如:数字1重复20次,number2重复44次.
20 1
44 2
1 3
5 4
.....我运行以下命令:
awk '{print $1}' logs.txt >> log2.txt
cat log2.txt | uniq -c >> log3.txt
sort -n srp >> log4.txt
tac log4.txt > log5.txt它对我有用,但它花了很多时间!我想把所有的命令放在文件中执行。我需要创建一个脚本!
发布于 2015-06-02 03:51:18
你只需要:
sort -rnk1 file | awk '{print $1}' | uniq -c | sort -nk2或者如果您在第一个字段中只有编号:
sort -rnk1 file | tr -cs 0-9 '[\n*]' | uniq -c | sort -nk2发布于 2015-06-02 04:30:09
下面是基于awk和sort的另一种解决方案:
awk '{a[$1]++} END{for(i in a)print a[i],i}' logs.txt | sort -k2n发布于 2015-06-02 05:04:34
awk允许通过PROCINFO["sorted_in"]进行数组遍历顺序控制,因此
awk 'BEGIN{PROCINFO["sorted_in"] = "@val_num_desc"}; {a[$1]++};
END{for (k in a) print k, a[k]}' logs.txthttps://unix.stackexchange.com/questions/206950
复制相似问题