unix逆序中的多列排序不起作用

时间:2014-06-06 07:08:11

标签: linux sorting unix command

我需要按照显示的顺序排列以下内容。首先基于第1列,其次是基于第3列。

148672074   ABC 23.77
148672073   ABC 13.77
148672074   ABC 53.77
148672071   ABC 23.77
148672074   ABC 93.77
148672074   ABC 193.77

我需要它,

148672071   ABC  23.77
148672073   ABC  13.77
148672074   ABC 193.77
148672074   ABC  93.77
148672074   ABC  53.77
148672074   ABC  23.77

我使用了以下命令。

sort -t "\t" -k1,1n -k3,3rn a.txt >b.txt

但是,我将输出视为

148672071   ABC  23.77
148672073   ABC  13.77
148672074   ABC 193.77
148672074   ABC  23.77
148672074   ABC  53.77
148672074   ABC  93.77

有人请告诉我哪里出错了?并且请给我正确的命令。

PS:我使用的文件是从Excel工作表导出的TSV格式文件。

1 个答案:

答案 0 :(得分:2)

\t被重新定义为t,而不是标签。

而不是\t,按 Ctrl + V ,然后按 Tab 表示制表符。

$ sort -t " " -k1,1n -k3,3rn a.txt
148672071   ABC 23.77
148672073   ABC 13.77
148672074   ABC 193.77
148672074   ABC 93.77
148672074   ABC 53.77
148672074   ABC 23.77

<强>更新

正如fedorqui评论的那样,您也可以使用$'\t'

$ sort -t $'\t' -k1,1n -k3,3rn a.txt
148672071   ABC 23.77
148672073   ABC 13.77
148672074   ABC 193.77
148672074   ABC 93.77
148672074   ABC 53.77
148672074   ABC 23.77