Sort -gใช้เพื่อเรียงลำดับตัวเลขตามลำดับจากน้อยไปหามาก
anthony@mtt3:~$ sort --help | egrep "\-g"
-g, --general-numeric-sort compare according to general numerical value
ต่อไปนี้หนึ่ง iterates ซับมากกว่าไฟล์ที่มีชื่อของไฟล์ PDF และคว้าหมายเลขเท่านั้นที่มีegrep -oและการใช้การจัดเรียง -gการจัดเรียงตัวเลขในการเรียงลำดับ จากนั้นมันจะป้อนตัวเลขเหล่านี้เพื่อ sed และเสียบเข้าแล้วลบเอาต์พุตของรายการซ้ำด้วย uniq
แทนที่ uniq คุณยังสามารถใช้ awk:
awk '!x[$0]++'
ข้างต้นเทียบเท่ากับ uniq
สิ่งที่คุณกำลังมองหาอยู่นี้เป็นหนึ่งในสายการบิน:
for i in `cat tmp | egrep -o "[0-9]*" | sort -g`; do cat tmp | sed "s/\(^[a-z]*\)\([0-9]*\)\(\.pdf\)/\1$i\3/g" | uniq; done
เนื้อหาของ tmp:
anthony@mtt3:~$ cat tmp
cwcch10.pdf
cwcch11.pdf
cwcch12.pdf
cwcch13.pdf
cwcch14.pdf
cwcch15.pdf
cwcch16.pdf
cwcch17.pdf
cwcch18.pdf
cwcch1.pdf
cwcch2.pdf
cwcch3.pdf
cwcch4.pdf
cwcch5.pdf
cwcch6.pdf
cwcch7.pdf
cwcch8.pdf
cwcch9.pdf
แก้ไข:
ผลลัพธ์ของคำสั่ง:
anthony@mtt3:~$ for i in `cat tmp | egrep -o "[0-9]*" | sort -g`; do cat tmp | sed "s/\(^[a-z]*\)\([0-9]*\)\(\.pdf\)/\1$i\3/g" | uniq; done
cwcch1.pdf
cwcch2.pdf
cwcch3.pdf
cwcch4.pdf
cwcch5.pdf
cwcch6.pdf
cwcch7.pdf
cwcch8.pdf
cwcch9.pdf
cwcch10.pdf
cwcch11.pdf
cwcch12.pdf
cwcch13.pdf
cwcch14.pdf
cwcch15.pdf
cwcch16.pdf
cwcch17.pdf
cwcch18.pdf