我在列中有两个具有相同字符串但顺序不同的文件。
文件测试1:
testbench.clk1 667
testbench.clk1_temp_net 667
testbench.clk 2000
和文件test2:
testbench.clk1 533
testbench.clk 1611
testbench.clk1_temp_net 538
我在两个文件的第 1 列上运行排序命令,如下所示,它给出了不同的输出:
sort -t " " -k1 test1
testbench.clk1 667
testbench.clk1_temp_net 667
testbench.clk 2000
sort -t " " -k1 test2
testbench.clk1 533
testbench.clk 1611
testbench.clk1_temp_net 538
你能解释一下为什么我会得到这个输出吗?正确的解决方案是什么?
最佳答案
来自信息排序
:
Many options affect how ‘sort’ compares lines; if the results are unexpected, try the ‘--debug’ option to see what happened.
让我们这样做(在我的 de_DE.utf8 系统上)
sort --debug -k1 file1
sort: es werden die Sortierregeln für »de_DE.utf8“ verwendet
sort: führende Leerzeichen sind signifikant in Schlüssel 1: Sie sollten daher wahrscheinlich auch „b“ angeben
不幸的是,用英语运行命令来显示发生了什么是没有意义的。翻译它:
sort: sorting rules for »de_DE.utf8“ in use
sort: preceding whitspace is significant in key 1: You might want to use „b“
当我运行命令时:
LANG=C sort -k1b file1
可以只是
LANG=C sort -b file1
订单看起来没问题。我想这对您来说也是一个语言环境问题。
顺便说一句,如果你想要分层排序 field1, field2 然后使用:
LANG=C sort -k1,1b -k2,2n file
问题被标记为 bash但事实证明,OP 使用的是 csh
。在这种情况下,您需要像这样传递 $LANG
:
env LANG=C sort ...
关于linux - 排序命令给出意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45742395/