ฉันมี file1:
"$lvl=57"
"$lvl=20"
"$lvl=48"
"$lvl=17"
"$lvl=58"
File2 ฉันต้องการ:
"$lvl=17"
"$lvl=20"
"$lvl=48"
"$lvl=57"
"$lvl=58"
เรียงตามลำดับตัวเลขของ file1
ฉันมี file1:
"$lvl=57"
"$lvl=20"
"$lvl=48"
"$lvl=17"
"$lvl=58"
File2 ฉันต้องการ:
"$lvl=17"
"$lvl=20"
"$lvl=48"
"$lvl=57"
"$lvl=58"
เรียงตามลำดับตัวเลขของ file1
คำตอบ:
ฉันชอบ -V --version-sort: มันทำงานได้ดีมากในหลาย ๆ สถานการณ์ที่ผสมสตริงและตัวเลข
sort -V
ฉันใช้ตัวเลือกนี้บ่อยมาก ...
ในทิศทางที่บางรุ่นจัดเรียงls -vls
คุณต้องบอกsort -nให้เรียงลำดับหลังจาก=:
sort -t = -k 2n
-k2n? นั่นเกี่ยวข้องกับการเรียงลำดับตัวเลขหรือไม่ ขอบคุณ.
-kกำหนดคีย์การเรียงลำดับ ดูหน้าคนสำหรับรายละเอียด -k2nกำหนดคีย์การเรียงลำดับที่เริ่มต้นที่ฟิลด์ที่สองและสิ้นสุดที่ส่วนท้ายของบรรทัด
ใช้การเรียงลำดับ:
sort -n file1 > file2
-n, - ตัวเลขเรียงลำดับ
เปรียบเทียบตามค่าตัวเลขสตริง
sort -g file1 > file 2
-g, --general-numeric-sort
sort -nเนื่องจากไม่ได้ขึ้นต้นด้วยตัวเลข เหตุผลที่เรียงลำดับเหล่านี้คือการเรียงลำดับแบบเต็มบรรทัดสุดท้าย (ทำโดยคำศัพท์ไม่ใช่ตัวเลข) สำหรับบรรทัดที่มีอันดับเดียวกัน ที่จะเรียงลำดับก่อน"$lvl=17" "$lvl=2"
-nและ-gซ้ำซ้อนที่นี่เนื่องจากอินพุตไม่เป็นตัวเลข ดังนั้นคำตอบนี้ทำให้เข้าใจผิดดังนั้น downvote (โปรดทราบว่า-gและตัวเลือกแบบยาวเป็นแบบเฉพาะของ GNU)
-nคือไม่ จำกัด จำนวนเต็มทศนิยม นั่นจะยังคงจัดเรียง"$lvl=17"ก่อน"$lvl=2"เป็นส่วนหนึ่งของการเรียงลำดับสุดท้าย
ฉันพบว่าคุณเพิ่งรันsort -hมันจะได้ผล --human-numberic-sortพวกเขาเรียกมันว่า
sort -h file1 > file2
sort -nคือสิ่งที่คุณต้องการใช้ มันเรียงลำดับตามที่เราเรียงลำดับหมายเลขsort -k 2 -n file1
sortใน File1 ของคุณโดยไม่มีตัวเลือกฉันจะได้รับ File2 ของคุณ คุณกำลังทำอะไรที่แตกต่าง คุณจะทิ้งอะไรจากคำถามนี้