5 text-processing sort text text-formatting
在文件的第一个字段上运行 sort 命令,sort -k1,1 file.txt
如下所示:
1,2,3
2,1,1
10,2,1
Run Code Online (Sandbox Code Playgroud)
给我:
1,2,3
10,2,1
2,1,1
Run Code Online (Sandbox Code Playgroud)
代替:
1,2,3
2,1,1
10,2,1
Run Code Online (Sandbox Code Playgroud)
我不想在 2 之前有 10 个。有什么办法可以做到这一点吗?
如中所述man sort
:
-n, --numeric-sort
compare according to string numerical value
Run Code Online (Sandbox Code Playgroud)
所以你要:
$ sort -nk1,1 file
1,2,3
2,1,1
10,2,1
Run Code Online (Sandbox Code Playgroud)
另请注意,默认情况下,字段以空白分隔,因此该文件中的那些行只有一个字段。例如,第一行的第一个字段是1,2,3
,而不是1
。您需要-t ,
为,-separated
字段添加:
sort -t, -nk1,1 file
Run Code Online (Sandbox Code Playgroud)
使用-n
,sort
只考虑在排序键开始时形成有效数字的字符序列(忽略前导空格)。对于第一行, without -t,
,取决于sort
实现和语言环境,1,2,3
将被视为 as1
或 as 1.2
(当用户的小数分隔符是,
)或123
(当用户的千位分隔符是,
并sort
忽略它的任何出现时)。