1

我有我创建的这个文件:

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
4

2 回答 2

0

如果您的问题是“我如何从命令行输入制表符”,那么答案是“您不需要”——sort 默认将制表符识别为分隔符。

于 2013-04-02T08:02:28.757 回答
0

由于将评论标记为答案的功能请求仍然被拒绝,因此我在此处复制上述解决方案。

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

于 2013-11-07T13:43:03.610 回答