我需要按照显示的顺序排列以下内容。首先基于第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格式文件。
答案 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