Bash 如何根据第三列对包含3列的行进行排序';s的价值观?按理说,巴什
我有一个以制表符分隔的文件,其中包含以下内容:Bash 如何根据第三列对包含3列的行进行排序';s的价值观?按理说,巴什,bash,shell,sorting,Bash,Shell,Sorting,我有一个以制表符分隔的文件,其中包含以下内容: 1 C45874154 22.8221295411 2 C56931350 -121.889340344 3 C22240035 NON 4 C12541514 -232.106357553 5 C40783672 87.7466539197 如何根据第三列中的值(从第三列中的最低值到最高值)对包含3列的行进行排序 我知道如何仅对一列进行排序: sort -n -
1 C45874154 22.8221295411
2 C56931350 -121.889340344
3 C22240035 NON
4 C12541514 -232.106357553
5 C40783672 87.7466539197
如何根据第三列中的值(从第三列中的最低值到最高值)对包含3列的行进行排序
我知道如何仅对一列进行排序:
sort -n -k 3 file
但我不知道如何将3列组合在一起以获得如下输出:
4 C12541514 -232.106357553
2 C56931350 -121.889340344
1 C45874154 22.8221295411
5 C40783672 87.7466539197
3 C22240035 NON
提前感谢,尝试
排序-nk3-k2,1 aaa
(我将您的示例文本命名为aaa
)。也就是说,首先按第三列进行数字排序。然后,按字母顺序对第二列和第一列进行排序。有道理吗
$ cat -v aaa
1 C45874154 22.8221295411
2 C56931350 -121.889340344
3 C22240035 NON
4 C12541514 -232.106357553
5 C40783672 87.7466539197
$ sort -nk3 -k2,1 aaa
4 C12541514 -232.106357553
2 C56931350 -121.889340344
3 C22240035 NON
1 C45874154 22.8221295411
5 C40783672 87.7466539197
“如何根据第三列中的值对第一列和第二列进行排序?”??这对我来说没有意义。如果我把表达式改成这样可能会更好:每行的第三列中都有值,我想根据第三列中的值从最低到最高对行进行排序。就像示例输出一样。它有意义吗?那么您知道的
sort
命令有什么问题吗?它只适用于一列!你需要一般的数字排序。使用-g
选项进行排序
。是的,这很有意义。但问题是,我如何添加底部值为“NON”的行,因为它不是数值?太好了,很高兴知道!以防万一,我没有意识到g
标志,所以我想到了类似的东西(根本不优雅)sort-nk3aaa | grep-vnon | sort-k2,1;grep NON-aaa | sort-k2,1
,它提供了您要查找的确切输出。。。如果您的sort
实现没有刚刚在AIX中测试过的g
标志,并且这里没有g
标志,那么这将非常有用…@user3576287:sortsort-g-k3文件是否将非放在顶部而不是底部?