我想根据特定的列使用Unix脚本对文件内容进行排序:
例如:在第3列上排序以下文件:
ax5aa
aa3ya
fg7ds
pp0dd
aa1bb
Run Code Online (Sandbox Code Playgroud)
会导致
pp0dd
aa1bb
aa3ya
ax5aa
fg7ds
Run Code Online (Sandbox Code Playgroud)
我已经尝试了排序-k 3,3,但它只是在3d组的单词(separator = SPACE)上排序.
有没有办法让unix排序按我喜欢的方式运行,还是应该使用其他工具?
Fra*_*nck 10
$ sort --key=1.3,1.3 inputfile
pp0dd
aa1bb
aa3ya
ax5aa
fg7ds
Run Code Online (Sandbox Code Playgroud)
排序手册页:
[...]
-k, - key = POS1 [,POS2]
在POS1(原点1)开始一个键,在POS2结束它(默认行尾)
[...]
POS是F [.C] [OPTS],其中F是字段编号,C是字段中的字符位置; 两者都是原点1.如果-t和-b都不起作用,则字段中的字符从前一个空格的开头计算.OPTS是一个或多个单字母排序选项,它覆盖该键的全局排序选项.如果没有给出密钥,请使用整行作为密钥.
使用--key = 1.3,1.3,您说只有一个字段(整行)并且您正在比较该字段的第三个字符位置.