ฉันมี 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 -v
ls
คุณต้องบอก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 ของคุณ คุณกำลังทำอะไรที่แตกต่าง คุณจะทิ้งอะไรจากคำถามนี้