[英]sort alphanumerics using unix sort
我有包含以下內容的字母數字文件
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
我想使用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
我使用了以下命令行
sort -t "." -n -k1 sortAlphanumeric.txt
但輸出不是必需的。 是否可以使用sort命令對其進行排序以獲得所需的輸出,或者我應該選擇其他一些腳本語言。
告訴您,您的密鑰從位置2開始,並且您想要以數字方式排序:
sort -k1.2n
您始終可以使用參數-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
作弊一點點。 假設字段分隔符是'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.