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