对包含空格的制表符分隔的文本字段进行排序

对包含空格的制表符分隔的文本字段进行排序

sort当引入制表符分隔的字段时,我在使用 Unix 命令时遇到了困难。

如果文件test.txt包含:

Hello (2)
Hello (1)
Hello

应用排序:

sort test.txt

产生输出:

Hello
Hello (1)
Hello (2)

但是,如果文件test2.txt包含制表符分隔的字段:

Hello (2)\tFred
Hello (1)\tFred
Hello\tFred

其中\t为制表符,应用排序:

sort -t $'\t' -k 1,2 test2.txt

导致不同的排序顺序。

Hello (1)   Fred
Hello (2)   Fred
Hello   Fred

有没有办法使用该sort命令,以便制表符分隔的字段按如下方式排序:

Hello   Fred
Hello (1)   Fred
Hello (2)   Fred

答案1

sort使用您当前的语言环境进行排序。我使用LANG=en_GB.UTF-8我自己的语言环境,得到了您“不想要的”结果。使用语言C环境,我得到了您想要的结果:

$ LANG=C sort -t $'\t' -k 1,2 test2.txt
Hello   Fred
Hello (1)       Fred
Hello (2)       Fred

相关内容