【发布时间】:2015-05-13 04:50:28
【问题描述】:
我想根据第 2-8 列中的值对文件进行排序? 本质上,我希望根据出现在任何这些字段中的行上的最大值进行升序,但忽略第 1、9 和 10 列。即具有最高值的行应该是文件的最后一行,第二个最大值应该是倒数第二行等...如果升序中的下一个数字出现在多行(如 A/B)上,我不在乎它的打印顺序。
我已经研究过使用 sort,但无法找到一种简单的方法来做我想做的事......
我有点难过,有什么想法吗?
输入:
#1 2 3 4 5 6 7 8 9 10
A 0.00 0.00 0.01 0.23 0.19 0.07 0.26 0.52 0.78
B 0.00 0.00 0.02 0.26 0.19 0.09 0.20 0.56 0.76
C 0.00 0.00 0.02 0.16 0.20 0.22 2.84 0.60 3.44
D 0.00 0.00 0.02 0.29 0.22 0.09 0.28 0.62 0.90
E 0.00 0.00 0.90 0.09 0.18 0.05 0.24 1.21 1.46
F 0.00 0.00 1.06 0.03 0.04 0.01 0.00 1.13 1.14
G 0.00 0.00 1.11 0.10 0.31 0.08 0.64 1.60 2.25
H 0.00 0.00 1.39 0.03 0.04 0.01 0.01 1.47 1.48
I 0.00 0.00 1.68 0.16 0.55 0.24 5.00 2.63 7.63
J 0.00 0.00 6.86 0.52 1.87 0.59 12.79 9.83 22.62
K 0.00 0.00 7.26 0.57 2.00 0.64 11.12 10.47 21.59
预期输出:
#1 2 3 4 5 6 7 8 9 10
A 0.00 0.00 0.01 0.23 0.19 0.07 (0.26) 0.52 0.78
B 0.00 0.00 0.02 (0.26) 0.19 0.09 0.20 0.56 0.76
D 0.00 0.00 0.02 (0.29) 0.22 0.09 0.28 0.62 0.90
E 0.00 0.00 (0.90) 0.09 0.18 0.05 0.24 1.21 1.46
F 0.00 0.00 (1.06) 0.03 0.04 0.01 0.00 1.13 1.14
G 0.00 0.00 (1.11) 0.10 0.31 0.08 0.64 1.60 2.25
H 0.00 0.00 (1.39) 0.03 0.04 0.01 0.01 1.47 1.48
C 0.00 0.00 0.02 0.16 0.20 0.22 (2.84) 0.60 3.44
I 0.00 0.00 1.68 0.16 0.55 0.24 (5.00) 2.63 7.63
K 0.00 0.00 7.26 0.57 2.00 0.64 (11.12) 10.47 21.59
J 0.00 0.00 6.86 0.52 1.87 0.59 (12.79) 9.83 22.62
【问题讨论】:
-
是否可以用另一种语言(例如 Java)编写程序来执行此操作?
-
很遗憾没有。我仅限于 bash...
-
JS,c++,什么?!请记住,您可以从命令行运行生成的程序! :P
-
老实说,我从来没有使用过 Java / C++ 并且不知道第一件事......我可能会使用 python 作为犹豫的第二个偏好,但我主要使用 bash 编写脚本。跨度>
-
这对于标准的 UNIX shell 工具来说是微不足道的,不需要看你需要自己安装的东西。