首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用脚本对文件中的数据进行排序?

如何使用脚本对文件中的数据进行排序?
EN

Unix & Linux用户
提问于 2015-06-02 03:37:33
回答 3查看 2.8K关注 0票数 2

我有一个文件logs.txt,上面有重复的数字:

代码语言:javascript
复制
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次.

代码语言:javascript
复制
20 1
44 2
1  3
5  4 
.....

我运行以下命令:

代码语言:javascript
复制
awk '{print $1}' logs.txt >> log2.txt

cat log2.txt | uniq -c >> log3.txt

sort -n srp >> log4.txt

tac log4.txt > log5.txt

它对我有用,但它花了很多时间!我想把所有的命令放在文件中执行。我需要创建一个脚本!

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2015-06-02 03:51:18

你只需要:

代码语言:javascript
复制
sort -rnk1 file | awk '{print $1}' | uniq -c | sort -nk2

或者如果您在第一个字段中只有编号:

代码语言:javascript
复制
sort -rnk1 file | tr -cs 0-9 '[\n*]' | uniq -c | sort -nk2
票数 3
EN

Unix & Linux用户

发布于 2015-06-02 04:30:09

下面是基于awksort的另一种解决方案:

代码语言:javascript
复制
awk '{a[$1]++} END{for(i in a)print a[i],i}' logs.txt | sort -k2n
票数 3
EN

Unix & Linux用户

发布于 2015-06-02 05:04:34

awk允许通过PROCINFO["sorted_in"]进行数组遍历顺序控制,因此

代码语言:javascript
复制
awk 'BEGIN{PROCINFO["sorted_in"] = "@val_num_desc"}; {a[$1]++}; 
END{for (k in a) print k, a[k]}' logs.txt
票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/206950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档