早教吧 育儿知识 作业答案 考试题库 百科 知识分享

linuxshell计算排序awk,sortORuniq!我有一个文本,内容大致如下:123.124.147.148.135.136.[.]表示一系列数据.我的目标是根据第一个第二个数字来计算排序,如果一二号相等,就吧其他值平

题目详情
linux shell 计算排序awk,sort OR uniq!
我有一个文本,内容大致如下:
1 2 3 .
1 2 4 .
1 4 7 .
1 4 8 .
1 3 5 .
1 3 6 .
[.]表示一系列数据.
我的目标是根据第一个第二个数字来计算排序,如果一二号相等,就吧其他值平均,然后根据一二号排序.比如我想要的结果如下
1 2 3.5 .
1 3 5.5 .
1 4 7.5 .
怎么写shell脚本操作?
▼优质解答
答案和解析
是这样吗:
[seesea@UC ]$ cat file
1 2 3 2
1 2 4 2
1 4 7 2
1 4 8 2
1 3 5 2
1 3 6 2
[seesea@UC ]$ awk '{count[$1" "$2]++; for(i=3; i<=NF; ++i) sum[$1" "$2,i]+=$i} END{for(i in count) { printf i; for(j=3; j<=NF; ++j) {printf OFS sum[i,j]/count[i]} print "" }}' file
1 2 3.5 2
1 3 5.5 2
1 4 7.5 2