【发布时间】:2016-10-09 05:48:55
【问题描述】:
我想对这个文件进行排序:
[ichen@ui02 ~]$ cat file
root_1down 20 root_EG 1195597
root_2down 19 root_EG 1340493
root_2down 1 root_EG 4136169
我想要的输出是数字顺序,所以这是我想要的结果:
root_1down 20 root_EG 1195597
root_2down 1 root_EG 4136169
root_2down 19 root_EG 1340493
那么,我怎样才能得到我想要的正确订单?
**Supply:**
根据@Cyrus:sort -t " " -k1,1 -k2,2n file的命令成功
但是,当我交换第一个单词和第二个单词的值时:
[ichen@ui05 ~]$ cat file
20 root_1down root_EG 1195597
19 root_2down root_EG 1340493
1 root_2down root_EG 4136169
这次我想得到相同的结果,我想先按第二个单词排序,然后按第一个,预期输出与上面相同。但是,输出不是我所期望的:
[ichen@ui05 ~]$ sort -t " " -k2,1 -k1,2n file
1 root_2down root_EG 4136169
19 root_2down root_EG 1340493
20 root_1down root_EG 1195597
第二个词没有按我预期的方式排序。
【问题讨论】:
-
您希望结果先按第一列中的嵌入数字排序,然后再按第二列中的数字排序?
-
@dawg 不是嵌入的数字,而是整个单词包含数字。事实上,有上千行,其中许多的第一个单词不同但嵌入的数字相同,所以我想按整个第一个单词排序
-
您交换了文件中的列,但没有交换排序键(好吧,您交换了键但不正确!)。
sort -t " " -k2,2 -k1,1n file应该会给出预期的输出。