按第三列和第四列排序
输入
B,c,3,
G,h,2,
J,k,4,
M,n,,1
输出
M,n,,1
G,h,2,
B,c,3,
J,k,4,
请帮帮我
已更新
awk -F, 'a[$3]<$4{a[$3]=$4;b[$3]=$0}END{for(l in a){print b[l]","l} }' FILE2
我使用此命令,我获得
此
M,n,,1,
,2
,3
,4
答案 0 :(得分:2)
sort
比awk
$ sort -t, -k3,3n -k4,4n ip.txt
M,n,,1
G,h,2,
B,c,3,
J,k,4,
-t,
使用,
作为分隔符-k3,3n
排序第3列,数字-k4,4n
然后按第4列排序,数字答案 1 :(得分:0)
awk
救援!
$ awk -F, '{a[$3,$4,NR]=$0}
END {n=asorti(a,ix);
for(k=1;k<=n;k++) print a[ix[k]]}' file
M,n,,1
G,h,2,
B,c,3,
J,k,4,
请注意,密钥是以处理重复行
的方式构造的如果您没有asorti
这里有解决方法
$ awk -F, '{a[$0]=$3 FS $4 FS NR RS $0}
END {n=asort(a);
for(k=1;k<=n;k++)
{sub(".*"RS,"",a[k]);
print a[k]}}' file
我使用RS作为辅助分隔符,以使该行与排序键分开。注意重复的行将被计为一个(重复的键是好的)。如果要支持重复行,请更改为a[$0,NR]
答案 2 :(得分:0)
我使用此命令并且它可以工作:
nawk -F, '{a[$3]<$4;a[$3]=$4;b[$3]=$0} END{for(i in a){print b[i]}}' FILE2