0

I execute the following code :

for i in {1..12};do  printf "%s %s\n" "${edate1[$i]}" "${etime1[$i]}"

(I retrieve the values of edate1 and etime1 from my database and store it in an array which works fine.)

I receive the o/p as:

97 16
97 16
97 12
107 16
97 16
97 16
97 16
97 16
97 16
97 16
97 16
100 15

I need to sort the first column using the sort command.

Expected 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
4

2 回答 2

2

这是我为找到您的解决方案所做的:

  1. 将原始输入复制到 in.txt

  2. 运行此代码,该代码使用 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 可以很容易地打印出您感兴趣的列(字段),即第一和第三。

于 2012-07-11T00:59:50.760 回答
1

这是对数据进行排序的最佳和最简单的方法

<OUTPUT> | sort -nrk1

请参阅以下链接以了解有关排序魔法的更多信息。

于 2012-07-12T07:30:06.723 回答