在unix中,如何在不同字段上按字母和数字对文件进行排序?
请不要认为这是“在unix中排序字母数字数据”问题的重复。。。我看了其他答案,觉得我的情况有点不同 我有这样的数据:在unix中,如何在不同字段上按字母和数字对文件进行排序?,unix,sorting,Unix,Sorting,请不要认为这是“在unix中排序字母数字数据”问题的重复。。。我看了其他答案,觉得我的情况有点不同 我有这样的数据: A 192 D 112 D 188 C 091 A 281 B 919 …我想先按第一列(字母顺序)排序,然后按第二列(数字顺序)排序。我尝试使用: sort -n -k1,2 …但这给了我第一个字段的正确排序,但第二个字段的排序错误(100010021003,10,1…而不是1,10100010021003) 有人能建议如何按我喜欢的方式
A 192
D 112
D 188
C 091
A 281
B 919
…我想先按第一列(字母顺序)排序,然后按第二列(数字顺序)排序。我尝试使用:
sort -n -k1,2
…但这给了我第一个字段的正确排序,但第二个字段的排序错误(100010021003,10,1…而不是1,10100010021003)
有人能建议如何按我喜欢的方式对这两列进行排序吗?尝试使用以下方法:-
sort -k1,1 -k4,4n
- -n:使程序根据数值排序
- -k选项:使用给定的列号对数据/字段进行排序。例如,选项-k2使程序使用第二个
数据列。选项-k3,3n-k4,4n对每个列进行排序。首先
它将对第3列和第4列进行排序
sort -t "," -k1,1 -k2n,2 file
sort-k4,4n-k1,1???我应该提到,两个列的字符串可以有1到50个字符,并且每行都不同
sort-k1-nk3文件
应该可以工作。感谢您的命令/回答!我尝试了这个,我看到了你要做的事情,但它对我的数据不起作用,因为每列中的值不是固定的字符长度。在我的示例中,我对column1使用字符长度1,对column2使用字符长度3,但实际上,字符长度在1到50之间,具体取决于行。有办法解决这个问题吗?我先反转命令,对第2列进行排序,然后对第1列进行排序:sort-k1,1-k4,4n
,这似乎有效。你能解释一下这个命令是如何工作的吗?我不熟悉-k4,4n
@jake9115:-更新了我的答案,解释了两者。希望有帮助:)附言,如果这真的对你有帮助的话,别忘了接受这个答案;)谢谢我现在明白了。令人费解的是,当数据中似乎只有两列时,答案排序在第4列。不过,基本答案(使用-k
指定要对哪些列进行排序以及如何对它们进行排序)是有效的。