[英]sort alphanumerics using unix sort
I have alphanumeric file containing following content 我有包含以下内容的字母数字文件
z1.doc
z10.doc
z100.doc
z101.doc
z102.doc
z11.doc
z12.doc
z13.doc
z14.doc
z15.doc
z16.doc
z17.doc
z18.doc
z19.doc
z2.doc
z20.doc
z3.doc
z4.doc
z5.doc
z6.doc
z7.doc
z8.doc
z9.doc
I want to sort it using unix/linux sort command to get the following output 我想使用unix / linux sort命令对其进行排序以获得以下输出
z1.doc
z2.doc
z3.doc
z4.doc
z5.doc
z6.doc
z7.doc
z8.doc
z9.doc
z10.doc
z11.doc
z12.doc
z13.doc
z14.doc
z15.doc
z16.doc
z17.doc
z18.doc
z19.doc
z20.doc
z100.doc
z101.doc
z102.doc
I have used following commandline 我使用了以下命令行
sort -t "." -n -k1 sortAlphanumeric.txt
But output is not as required. 但输出不是必需的。 Is it possible using sort command to sort this to get the required output or i should choose some other scripting language. 是否可以使用sort命令对其进行排序以获得所需的输出,或者我应该选择其他一些脚本语言。
告诉您,您的密钥从位置2开始,并且您想要以数字方式排序:
sort -k1.2n
You can always perform sort with argument -V
to sort alphanumeric string.. 您始终可以使用参数-V
进行排序以对字母数字字符串进行排序。
$ sort -V inputfile > outputfile
$ cat inputfile
z1.doc
z10.doc
z100.doc
z101.doc
z102.doc
z11.doc
z12.doc
z13.doc
z14.doc
z15.doc
z16.doc
z17.doc
z18.doc
z19.doc
z2.doc
z20.doc
z3.doc
z4.doc
z5.doc
z6.doc
z7.doc
z8.doc
z9.doc
$ cat outputfile
z1.doc
z2.doc
z3.doc
z4.doc
z5.doc
z6.doc
z7.doc
z8.doc
z9.doc
z10.doc
z11.doc
z12.doc
z13.doc
z14.doc
z15.doc
z16.doc
z17.doc
z18.doc
z19.doc
z20.doc
z100.doc
z101.doc
z102.doc
cheat a little bit. 作弊一点点。 say that the field delimiter is 'z' and sort numerically using second field. 假设字段分隔符是'z'并使用第二个字段以数字方式排序。
sort -t z -k 2 -n < fff
z1.doc
z2.doc
z3.doc
z4.doc
z5.doc
z6.doc
z7.doc
z8.doc
z9.doc
z10.doc
z11.doc
z12.doc
z13.doc
z14.doc
z15.doc
z16.doc
z17.doc
z18.doc
z19.doc
z20.doc
z100.doc
z101.doc
z102.doc
如果您不想确定数据的数字/字母边界的位置,可以使用模块Sort::Key::Natural
和natsort
perl -MSort::Key::Natural -e "print natsort <>" sortAlphanumeric.txt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.