我一直在尝试解决此问题,但我尝试过的所有方法均未真正起作用。我有一个表,该表(来自.txt文件)中需要按表的特定原始数据的数字顺序进行排序。
我拥有的数据是这样组成的:
Name Team Age
David a 20
James b 25
Anthony c 22
Carter b 21
Jessica a 24
基本上我需要订购(从最小到最大)某个团队的年龄,例如A。因此,预期输出为:
a 20
a 24
答案 0 :(得分:1)
awk '$2==team{print $2,$3}' team='a' file | sort -t' ' -k2n
答案 1 :(得分:0)
您可以使用SQL以及SUM和GROUP BY函数非常轻松地处理此问题:
SELECT team, SUM(age) FROM table1 GROUP BY team;
+------+----------+
| team | SUM(age) |
+------+----------+
| a | 44 |
| b | 46 |
| c | 22 |
+------+----------+
答案 2 :(得分:0)
仅重击显然不是这项工作的最佳工具。
如果您像我一样喜欢Bash代码,您可能仍然会对仅Bash的解决方案感兴趣(嗯,几乎,让我们不要重新发明STDOUT
ing):
sort
关联数组不是Bash最具可读性的功能。
答案 3 :(得分:0)
一个awk
解决方案,无需单独的管道和子外壳即可进行排序:
awk '$2 == "a" {arr[$3]} END {for (i in arr) print "a", i}' file
您只需将age
作为索引存储在数组中,然后在末尾输出索引即可提供固有的排序,而无需单独的过程,例如
使用/输出示例
$ awk '$2 == "a" {arr[$3]} END {for (i in arr) print "a", i}' file
a 20
a 24
调用外部sort
可以减少键入的字符数,但是可以增加管道的额外开销以及sort
所需的子外壳,例如
awk '$2 == "a" {print $2, $3}' file | sort
(相同的输出)