在shell脚本中使用sort命令

时间:2012-07-11 00:13:58

标签: shell sorting

我执行以下代码:

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

2 个答案:

答案 0 :(得分:2)

这就是我找到你的解决方案所做的:

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

  2. 运行此代码,该代码使用awk,排序和粘贴。

  3. 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)

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

<OUTPUT> | sort -nrk1

请参阅以下link以了解有关排序魔力的更多信息。