sort 命令的顺序错误

sort 命令的顺序错误

如何使用排序命令处理以“|”分隔的数据(管道字符)?

考虑这个名为“x”的示例文件,它有两个字段:

axis-AXIS|OK
axis-AXISR|OK
axis-AXISD2X|OK
axis-AXISA|OK
axis-AXISD1|OK
axis-AXIS1RX|OK
axis-AXISR1M|OK
axis-AXISD2|FALSE
axis-AXISMD|FALSE
axis-AXISM|FALSE
axis-AXISE|OK
axis-AXISD|OK

我的区域设置:

echo $LC_ALL
C

当它被排序时,字符“|”似乎是产生奇怪分类的关键的一部分:

sort -t"|" x

axis-AXIS1RX|OK
axis-AXISA|OK
axis-AXISD1|OK
axis-AXISD2X|OK
axis-AXISD2|FALSE
axis-AXISD|OK
axis-AXISE|OK
axis-AXISMD|FALSE
axis-AXISM|FALSE
axis-AXISR1M|OK
axis-AXISR|OK
axis-AXIS|OK

指定字段键sort -t"|" -k1 x没有任何变化。

答案1

如果没有结束字段编号-k,它将考虑从 1 开始的所有字段。您需要:

sort -k1,1 -t'|' file.txt

测试 :

$ sort -k1,1 -t'|' file.txt 
axis-AXIS|OK
axis-AXIS1RX|OK
axis-AXISA|OK
axis-AXISD|OK
axis-AXISD1|OK
axis-AXISD2|FALSE
axis-AXISD2X|OK
axis-AXISE|OK
axis-AXISM|FALSE
axis-AXISMD|FALSE
axis-AXISR|OK
axis-AXISR1M|OK

如果您locale不是C,您可以即时设置:

LC_ALL=C sort -k1,1 -t'|' file.txt

相关内容