DPM*_*DPM 4 linux sorting bash ubuntu range
大家.我有一些关于bash排序的问题.我正在使用Ubuntu 14.04.第一个问题是:为什么我有这个内容的some.txt文件:
b 8
b 9
a 8
a 9
Run Code Online (Sandbox Code Playgroud)
当我输入这个:
sort -n -k 2 some.txt
Run Code Online (Sandbox Code Playgroud)
结果将是:
a 8
b 8
a 9
b 9
Run Code Online (Sandbox Code Playgroud)
这意味着文件首先排序到第二个字段,然后到第一个字段,但我认为这将保持稳定,即
b 8
a 8
...
...
Run Code Online (Sandbox Code Playgroud)
也许如果两行相等则应用词典排序或什么?
第二个问题是:为什么以下不起作用:
sort -n -k 1,2 try.txt
Run Code Online (Sandbox Code Playgroud)
try.txt文件是这样的:
8 2
8 11
8 0
8 5
9 2
9 0
Run Code Online (Sandbox Code Playgroud)
第三个问题不是用于排序,而是在我尝试这样做时出现:
sort blank.txt > blank.txt
Run Code Online (Sandbox Code Playgroud)
在此之后,blank.txt文件为空.这是为什么 ?
显然,默认情况下GNU排序不稳定:添加-s选项
最后,作为最后的手段,当所有键比较相等时,sort会比较整行,就像没有指定除--reverse(-r)之外的任何排序选项一样.--stable(-s)选项禁用此最后的比较,以便所有字段比较相等的行保留其原始相对顺序.(https://www.gnu.org/software/coreutils/manual/html_node/sort-invocation.html)
如果您不显示文本文件,则无法回答您的问题
>如果存在重定向将截断文件.之后,您将提供一个空文件sort对于#2,你实际上没有解释什么不起作用.扩展您的示例数据,就会发生这种情况
$ cat try.txt
8 2
8 11
9 2
9 0
11 11
11 2
$ cat try.txt
8 2
8 11
9 2
9 0
11 11
11 2
Run Code Online (Sandbox Code Playgroud)
我假设你想知道为什么第二列没有按数字排序.让我们回到sed手册:
'-n'
' -
数字排序' ' - sort = numeric'按数字排序.这个数字从每一行开始,包括......
看起来像-n只使用数字排序第一列.经过一些反复试验后,我发现这个组合以数字方式对每个列进行排序:
$ sort -k1,1n -k2,2n try.txt
8 2
8 11
9 0
9 2
11 2
11 11
Run Code Online (Sandbox Code Playgroud)