我有一个制表符分隔的行,我想只对第一列进行排序。
可以使用Unix排序来实现吗?
u.s 2||`` U.S ''||527 || 107
u.s. 2||`` U.S. ''||532 || 107
us. 2||Us.||532 || 112
u.s. 2||U.s.||629 || 112
us. 2||US.||6444 || 112
us 2||US||8655700 || 27
u.s 2||U.s||992 || 112
必须使用
进行排序u.s
u.s.
us.
u.s.
us.
us
u.s
不考虑点数。在使用sort -k1之后对上面的内容进行排序。 我们。和美国不在一起。
答案 0 :(得分:2)
如果您按第一个字段排序,除非您想忽略该行的其余部分,否则没有理由指定该键。如果你想这样做,你需要做-k1,1
。您需要指定C
区域设置(或者您可以使用同义POSIX
区域设置来忽略这些区域。
LC_COLLATE=C sort -k1,1 inputfile
或
LC_COLLATE=C sort inputfile
答案 1 :(得分:1)
您可能需要为排序设置区域设置,并将其设置为C语言环境:
LANG=C sort -k1 data.file
答案 2 :(得分:0)
我相信你在寻找:
sort -k 1 filetosort
Tab是一个空格分隔符,它是排序的默认分隔符。
答案 3 :(得分:0)
我的排序(在Linux上)可以做到。我不知道它有多便携。在BASH:
sort -k1 -t$'\t'
-k1
给出了键列的id,-t
指定了字段分隔符。