【发布时间】:2014-12-07 07:23:54
【问题描述】:
我有以下数据。
...
4080 2 2 3236 4079 0 0.869 0.872 1.863 2.000 -0.720
3654 2 2 3653 3655 0 0.864 0.873 1.798 2.000 -0.676
3653 1 1 3654 0 0.864 0.977 0.000 0.422
3655 1 1 3654 0 0.873 0.895 0.000 0.404
...
数据共有100000000行,由100000个数据块组成,每个数据块有1000行。
我希望对数据块内的数据进行排序,也就是说,每 1000 行排序一次。就第一列值而言,像这样对 1~1000、1001~2000 进行排序。喜欢
...
1 4 4 263 704 952 244 0 0.951 0.941 0.928 0.936 3.836 0.000 1.668
2 4 4 33 215 305 172 0 0.937 0.942 0.945 0.924 3.815 0.000 1.574
3 4 4 279 344 377 1945 0 0.928 0.934 0.938 0.920 3.830 0.000 1.502
...
我可以使用 awk、sed 和 sort of linux 来执行此操作,以使用第 m 列值对每 n 行进行排序吗?我知道 'sort -nk m file > output' 可以进行排序,但我怎样才能对每第 n 行执行此操作?我需要使用 for 循环吗?
已解决
我从https://unix.stackexchange.com/questions/99582/sorting-blocks-of-lines 找到了答案。我什至不需要使用 for 循环,使用 AWK 命令来执行此操作。
【问题讨论】:
-
是的。如需更多帮助,请发布一个简短的示例,例如,9 个输入行,每行 3 列,并以 3 行为一组进行排序。显示给定输入的预期输出。