Chinaunix
标题:
awk 处理以下文本,如何处理?
[打印本页]
作者:
红狐狸
时间:
2012-09-08 14:54
标题:
awk 处理以下文本,如何处理?
file:
a001 1 100
a001 2 700
a002 1 500
a002 2 100
a003 1 100
形成:
a001 2 600
a002 1 400
a003 1 100
既:按第一列, 统计第三列的差额 (第三列哪个值大,第二列, 置成值大的哪一行第二列)
作者:
kk5234
时间:
2012-09-08 17:03
[netslyz@noopoo ~]$ sort -k3 file|awk '{a[$1]=$1FS$2;b[$1]=$3-b[$1]}END{for(i in a)print a[i],b[i]}'
a001 2 600
a002 1 400
a003 1 100
复制代码
作者:
zooyo
时间:
2012-09-08 18:10
提示:
作者被禁止或删除 内容自动屏蔽
作者:
linuxforlive
时间:
2012-09-13 11:52
回复
3#
zooyo
最近准备好好学习awk 麻烦版主给讲解一下
我按这个执行 得到的结果是这个
[root@master opt]# awk 'NR>1{if(x==$1){if($3>z){$3=$3-z}else{$3=z-$3;$2=y}}else{print x,y,z}}{x=$1;y=$2;z=$3}' file
a001 2 600
a002 1 400
[root@master opt]# cat file
a001 1 100
a001 2 700
a002 1 500
a002 2 100
a003 1 100
作者:
zooyo
时间:
2012-09-13 12:32
提示:
作者被禁止或删除 内容自动屏蔽
作者:
linuxforlive
时间:
2012-09-13 13:44
回复
5#
zooyo
完整是可以的 不过能否讲解一下 <(echo)这个是啥意思啊 麻烦了
作者:
zooyo
时间:
2012-09-13 14:03
提示:
作者被禁止或删除 内容自动屏蔽
作者:
linuxforlive
时间:
2012-09-13 14:07
回复
7#
zooyo
谢谢版主的耐心教导
继续学习
作者:
xuqq999
时间:
2012-09-20 15:36
awk '{if(!a[$1]){a[$1]=$3;b[$1]=$3;c[$1]=$2}else{if($3>a[$1]){b[$1]=$3-a[$1];c[$1]=$2}else{b[$1]=a[$1]-$3}}}END{for(i in a)print i,c[i],b[i]}' file
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2