用于排序的bash脚本

时间:2013-04-02 02:44:31

标签: bash

我创建了这个文件:

Kuala Lumpur        78          56
Seoul               86          66
Karachi             95          75
Tokyo               85          60
Lahore              85          75
Manila              90          85

在命令行上,我可以使用sort -t对其进行排序,并使用制表符空间进行分隔,但现在我正在尝试编写一个脚本来读取此内容并打印出不同的排序。现在如果我读入一个数组并告诉它存储在选项卡中,那么“吉隆坡”线就会被抛弃然后排序。我该怎么做这个空间。我不想把它取出或用逗号代替,但如果我必须,我会。

 #!/bin/bash
 cat asiapac-temps | sort -t'    ' -k 1,1d
 echo ""
 cat asiapac-temps | sort -t'    ' -k 2,2n
 echo ""
 cat asiapac-temps | sort -t'    ' -k 3

这就是我现在正在使用的。我试图以不同的方式做到这一点,所以不要一遍又一遍地使用sort 输出是: 按城市:

   Karachi             95          75
   Kuala Lumpur        78          56
   Lahore              85          75
   Manila              90          85
   Seoul               86          66
   Tokyo               85          60

高温(col2)

   Kuala Lumpur        78          56
   Lahore              85          75
   Tokyo               85          60
   Seoul               86          66
   Manila              90          85
   Karachi             95          75

低温(col3)

   Kuala Lumpur        78          56
   Tokyo               85          60
   Seoul               86          66
   Karachi             95          75
   Lahore              85          75
   Manila              90          85

2 个答案:

答案 0 :(得分:0)

如果您的问题是“如何从命令行输入制表符”,则答案为“您不需要” - 默认情况下,将制表符识别为分隔符。

答案 1 :(得分:0)

由于对mark a comment as an answer的功能请求仍然被拒绝,我在此处复制上述解决方案。

您无法对任何内容进行排序,并输出3种不同的结果。无论何时在shell中编写循环,您可能都采用了错误的方法(shell主要是一种可以从中调用工具而不是编程语言的环境)。每次想要生成排序输出时调用sort几乎肯定会比任何涉及数组索引的方法更简单,更有效。 - 艾德莫顿