我想对一个文件进行排序,其中排序的键是第二列中的一个数字,从该列的第二个字符开始。例如:
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
如何以正确的方式做到这一点?
你遇到了这个:
将给出您所追求的结果:分隔字段的空格是第二个字段的第一个字符。
或者,您可以添加
b
忽略前导空格的选项:这允许键定义在字段前使用任意数量的空格。