我执行以下代码:
for i in {1..12};do printf "%s %s\n" "${edate1[$i]}" "${etime1[$i]}"
(我从我的数据库中检索edate1和etime1的值,并将其存储在一个工作正常的数组中。)
我收到的o / p为:
97 16
97 16
97 12
107 16
97 16
97 16
97 16
97 16
97 16
97 16
97 16
100 15
我需要使用sort命令对第一列进行排序。
预期o / p:
107 16
100 16
97 12
97 16
97 16
97 16
97 16
97 16
97 16
97 16
97 16
97 15
答案 0 :(得分:2)
这就是我找到你的解决方案所做的:
将原始输入复制到in.txt
运行此代码,该代码使用awk,排序和粘贴。
awk '{print $1}' in.txt | sort -g -r -s > tmp.txt
paste tmp.txt in.txt | awk '{print $1 " " $3}' > out.txt
然后out.txt匹配原始帖子中的预期输出。
要了解它是如何运作的,请看一下:
$ paste tmp.txt in.txt
107 97 16
100 97 16
97 97 12
97 107 16
97 97 16
97 97 16
97 97 16
97 97 16
97 97 16
97 97 16
97 97 16
97 100 15
因此,您将对第一列进行排序,然后对原始列进行排序。 Awk可以轻松打印出您感兴趣的列(字段),即第一个和第三个。
答案 1 :(得分:1)