参考这里
文本如下:
110,1|1,10
110,1|2,101
110,3|1,103
110,4|1,16
110,5|1,12
112,1|1,10
112,1|2,101
112,2|1,103
110,6|1,11
104,2|1,34
112,3|1,103
112,4|1,16
112,6|1,11
113,1|1,30
110,2|1,103
112,5|1,12
sort -t”,” -k 1n,1 -k 3rn,3 file.txt
排序结果:
[root@lzpm 0621]# sort -t “,” -k 1n,1 -k 3rn,3 file.txt
104,2|1,34
110,2|1,103
110,3|1,103
110,1|2,101
110,4|1,16
110,5|1,12
110,6|1,11
110,1|1,10
112,2|1,103
112,3|1,103
112,1|2,101
112,4|1,16
112,5|1,12
112,6|1,11
112,1|1,10
113,1|1,30
结果说明:
1.-t 指定文本分隔符
2.-k 指定排序列
3.-n 按数字进行排序
4.-r 翻转排序结果
上面的例子为按第一行正排序,按第三行反排序;
尝试了一下:
示例文本是:
1Di1hRoTF2J5drmt68fM5T1op6ng61a7oQ|16174162
1LTRvixDF135BmXDbfDZg78FHGHcJzi3Za|1000039
1HhCZ8EXLG3VRk4BJUksmgaynL4zG68h87|1000509
13XG1UZPnyy4xR4dPjnwabpoMhupQWPdp2|1476276
1CRZk18DsS2SoKC65hbWq26Sj5JF5srSRN|13141000
1DkQEyqZz6aGAMGrQZ69iMW6XmNiLPLz41|13892251
1K14i1pqRWFm9i7t1cVRkpAkXXFXesK4J5|4553000
19q2sMN7Pc6FKoVSk21n3PXRctQewj4hVN|1900000
1LA5VGo9ZCqk7mrFpsy7QnsAdNNA694a1Y|1021503
1KMXyG9DSHBXSrkPqGCbpWNEDicuxmwcuc|1000000
123vQjgAAzHs71iEL1P6WicY1d6NPAf8nj|1703872
18u2ptqqk1nw7ze3VT4EcvBj7ZJyUA7ZWb|36665044
18vF5XJLm5EdWzHP5t4g9SMdhQ2AAqTgoU|25657103
1Q8r5mtVcppxgCTQBsamBCwFtCubi61xZi|1000000
1Fx3DgMrxy8Z7aPm8i9VXaxjYu2qAoG4R6|5000000000
1Er9Rhgi4exu9KKrwym6pyr5UMhrWE2JZd|36000000
1Hz8runwFR6PHVQ6LWrSfuRyqMqfygFT6y|1410000
14qpupZXmeBGsKz9kjNXLrssuhqLuQGQKu|4290369
14ukgx4C8tJDQfAm7gLoEuHgkf7YLKMRc5|1000049
1LVg8VxJ7yCWJomFC6shkYZBU5rQsvZ9kF|6000000
...
需求是:根据"|"后面的数字进行排序
执行的命令是:
sort -t"|" -k 2rn,2 more.txt > sorted_more.txt
我其实并不是很清楚2rn后面的那个",2"是什么意思,但执行以后的结果是正确的。
后续:
先对addr和bal文件排序,然后在python中执行sum操作:
根据第一列(addr)排序: sort -t"|" -k 1,1 all_addr_bal.txt > sorted_all_addr_bal.txt