我想对文件进行排序,其中排序的键是第二列中的数字,从该列的第二个字符开始。例如:
4 31
5 a14
2 h11
1 x4
2 z3
所需的输出是:
4 31
2 z3
1 x4
2 h11
5 a14
这似乎sort -k
是一种可行的方法,但它并不像我预期的那样有效。
k, --key=KEYDEF
通过键排序; KEYDEF 给出位置和类型
KEYDEF 是 F[.C][OPTS][,F[.C][OPTS]] 表示开始和停止位置,其中 F 是字段编号,C 是字段中的字符位置;两者都是原点 1,停止位置默认为线的末尾。如果 -t 和 -b 均无效,则字段中的字符从前面的空格的开头开始计数。 OPTS 是一个或多个单字母排序选项 [bdfgiMhnRrV],它会覆盖该键的全局排序选项。如果未给出键,则使用整行作为键。
我尝试这样做:
sort -k 2.2V file
4 31
5 a14
2 h11
1 x4
2 z3
如何以正确的方式做到这一点?
答案1
你遇到了这个:
字段中的字符从前面的空格的开头开始计数。
sort -k 2.3V file
将给出您想要的结果:分隔字段的空格是第二个字段的第一个字符。
或者,您可以添加b
忽略前导空格的选项:
sort -k 2.2bV file
这使得键定义可以与字段之前的任意数量的空格一起使用。