对文件的第一个字段运行排序命令,sort -k1,1 file.txt
如下所示:
1,2,3
2,1,1
10,2,1
给我:
1,2,3
10,2,1
2,1,1
代替:
1,2,3
2,1,1
10,2,1
我不想要 2 之前的 10。有什么办法可以做到这一点吗?
答案1
正如中所解释的man sort
:
-n, --numeric-sort
compare according to string numerical value
所以你要:
$ sort -nk1,1 file
1,2,3
2,1,1
10,2,1
另请注意,默认情况下,字段以空白分隔,因此该文件中的这些行只有一个字段。例如,第一行的第一个字段是1,2,3
,而不是1
。您需要添加-t ,
字段,-separated
:
sort -t, -nk1,1 file
使用 时-n
,sort
仅考虑在排序键开头形成有效数字的字符序列(忽略前导空格)。对于第一行,没有-t,
,根据sort
实现和区域设置,1,2,3
将被视为或1
作为1.2
(当用户的小数分隔符为 时,
)或123
(当用户的千位分隔符为 时,
并sort
忽略它的任何出现)。
答案2
把这个留给任何偶然发现这个的人:sort -V -k1,1 file.txt
应该有效。