บทนำ
ในคู่มือนี้ฉันจะแสดงวิธีจัดเรียงข้อมูลในไฟล์ที่คั่นด้วยและจากผลลัพธ์ของคำสั่งอื่น ๆ
คุณจะไม่ต้องแปลกใจที่ทราบว่าคำสั่งที่คุณใช้เพื่อทำงานนี้เรียกว่า "sort" สวิตช์หลักทั้งหมดของคำสั่ง sort จะได้รับในบทความนี้
ตัวอย่างข้อมูล
ข้อมูลในไฟล์สามารถจัดเรียงได้ตราบเท่าที่มีการคั่นด้วยวิธีใด ๆ
ตัวอย่างเช่นเรามาตารางลีกขั้นสุดท้ายจากสกอตติชพรีเมียร์ลีกเมื่อปีที่แล้วและเก็บข้อมูลไว้ในไฟล์ "spl"
คุณสามารถสร้างไฟล์ข้อมูลดังต่อไปนี้พร้อมกับสโมสรหนึ่งแห่งและข้อมูลของสโมสรนั้นจะคั่นด้วยเครื่องหมายจุลภาคในแต่ละแถว
ทีม | เป้าหมายที่ทำประตู | เป้าหมาย | จุด |
---|---|---|---|
เซลติก | 93 | 31 | 86 |
อเบอร์ดีน | 62 | 48 | 71 |
ฮาร์ทส์ | 59 | 40 | 65 |
เซนต์จอห์นสโตน | 58 | 55 | 56 |
มาเธอร์ | 47 | 63 | 50 |
รอสส์เคาน์ตี้ | 55 | 61 | 48 |
อินเวอร์เนส | 54 | 48 | 52 |
ดันดี | 53 | 57 | 48 |
แพร์ | 41 | 50 | 46 |
แฮมิลตัน | 42 | 63 | 43 |
คิลมาร์ | 41 | 64 | 36 |
ดันดียูไนเต็ด | 45 | 70 | 28 |
วิธีจัดเรียงข้อมูลในไฟล์
จากตารางนั้นคุณจะเห็นได้ว่าเซลติกชนะลีกและดันดียูไนเต็ดเข้ามาเป็นครั้งสุดท้าย ถ้าคุณเป็นแฟนของดันดียูไนเต็ดคุณอาจต้องการทำให้ตัวเองรู้สึกดีขึ้นและคุณสามารถทำสิ่งนี้ได้โดยการเรียงลำดับเป้าหมาย
เมื่อต้องการทำเช่นนี้ให้เรียกใช้คำสั่งต่อไปนี้:
sort -k2 -t, spl
เวลานี้คำสั่งจะเป็นดังนี้:
- แพร์
- คิลมาร์
- แฮมิลตัน
- ดันดียูไนเต็ด
- มาเธอร์
- ดันดี
- อินเวอร์เนส
- รอสส์เคาน์ตี้
- เซนต์จอห์นสโตน
- ฮาร์ทส์
- อเบอร์ดีน
- เซลติก
เหตุผลที่ผลลัพธ์อยู่ในลำดับนี้คือคอลัมน์ที่ 2 เป็นเป้าหมายที่ทำแต้มคอลัมน์และการจัดเรียงเรียงจากต่ำสุดไปสูงสุด
สวิตช์ -k ช่วยให้คุณสามารถเลือกคอลัมน์ที่ต้องการจัดเรียงตามและสวิตช์ -t ช่วยให้คุณสามารถเลือกตัวคั่น
เพื่อให้ตัวเองมีความสุขจริงๆแฟนของ Dundee United สามารถเรียงลำดับตามคอลัมน์ 4 โดยใช้คำสั่งต่อไปนี้:
sort -k4 -t, spl
ตอนนี้ดันดียูไนเต็ดอยู่ด้านบนและเซลติกอยู่ที่ด้านล่าง
แน่นอนว่านี่จะทำให้ทั้งแฟนเซลติกและดันดีมีความสุขจริงๆ หากต้องการนำสิ่งที่ถูกต้องคุณสามารถจัดเรียงตามลำดับย้อนกลับโดยใช้สวิตช์ต่อไปนี้:
sort -k4 -t, -r spl
สวิทช์แปลก ๆ ช่วยให้คุณสามารถเรียงลำดับแบบสุ่มซึ่งจริงๆเพียงทำให้แถวของข้อมูลลวก ๆ
คุณสามารถทำได้โดยใช้คำสั่งต่อไปนี้:
sort -k4 -t, -R spl
นี้อาจทำให้เกิดปัญหาจริงถ้าคุณผสมขึ้น -r และ -R สวิตช์ของคุณ
คำสั่ง sort ยังสามารถจัดเรียงวันที่เป็นคำสั่งเดือน เพื่อแสดงให้เห็นในตารางต่อไปนี้:
เดือน | ข้อมูลที่ใช้ |
---|---|
มกราคม | 4G |
กุมภาพันธ์ | 3000K |
มีนาคม | 6000K |
เมษายน | 100M |
อาจ | 5000M |
มิถุนายน | 200K |
กรกฎาคม | 4000K |
สิงหาคม | 2500K |
กันยายน | 3000K |
ตุลาคม | 1000K |
พฤศจิกายน | 3G |
ธันวาคม | 2G |
ตารางด้านบนหมายถึงเดือนของปีและจำนวนข้อมูลที่ใช้บนอุปกรณ์เคลื่อนที่
คุณสามารถจัดเรียงวันที่ตามตัวอักษรโดยใช้คำสั่งต่อไปนี้:
sort -k1 -t, datausedlist
นอกจากนี้คุณยังสามารถจัดเรียงตามเดือนโดยใช้คำสั่งต่อไปนี้:
sort -k1 -t, -M datausedlist
ตอนนี้เห็นได้ชัดว่าตารางด้านบนแสดงให้เห็นแล้วในลำดับเดือน แต่ถ้ารายการถูกสุ่มแล้วนี้จะเป็นวิธีที่ง่ายในการจัดเรียง
เมื่อมองไปที่คอลัมน์ที่สองคุณจะเห็นว่าค่าทั้งหมดอยู่ในรูปแบบที่มนุษย์สามารถอ่านได้ซึ่งดูเหมือนจะไม่ง่ายนัก แต่คำสั่ง sort สามารถเรียงลำดับข้อมูลที่ใช้คอลัมน์โดยใช้คำสั่งต่อไปนี้:
sort -k2 -t, -h datausedlist
วิธีการเรียงข้อมูลที่ส่งผ่านจากคำสั่งอื่น ๆ
ขณะที่การเรียงลำดับข้อมูลในไฟล์เป็นประโยชน์คำสั่ง sort สามารถใช้เพื่อเรียงลำดับผลลัพธ์จากคำสั่งอื่น ๆ :
เช่นดูคำสั่ง ls:
ls-lt
คำสั่งข้างต้นส่งกลับแต่ละไฟล์เป็นแถวของข้อมูลที่มีฟิลด์ต่อไปนี้ที่แสดงในคอลัมน์:
- สิทธิ์
- จำนวนโหนด
- ชื่อผู้ใช้
- ชื่อกลุ่ม
- ขนาด
- วันที่เข้าใช้ครั้งล่าสุด
- ชื่อไฟล์
คุณสามารถเรียงลำดับรายการตามขนาดไฟล์โดยเรียกใช้คำสั่งต่อไปนี้:
ls-lt | จัดเรียง -k5
เพื่อให้ได้ผลลัพธ์ในลำดับย้อนกลับคุณจะใช้คำสั่งต่อไปนี้:
ls-lt | จัดเรียง -k5 -r
คำสั่ง sort สามารถใช้ร่วมกับคำสั่ง ps ซึ่งจะแสดงรายการกระบวนการที่ทำงานบนระบบของคุณ
เช่นเรียกใช้คำสั่ง ps ต่อไปนี้ในระบบของคุณ:
ps -F
คำสั่งดังกล่าวส่งกลับข้อมูลจำนวนมากเกี่ยวกับกระบวนการที่กำลังทำงานอยู่ในระบบของคุณ
หนึ่งในคอลัมน์เหล่านี้มีขนาดและคุณอาจต้องการดูว่ากระบวนการใดมีขนาดใหญ่ที่สุด
เมื่อต้องการจัดเรียงข้อมูลตามขนาดคุณจะใช้คำสั่งต่อไปนี้:
ps -eF | จัดเรียง -k5
สรุป
มีคำสั่ง sort ไม่มากนัก แต่สามารถใช้ประโยชน์ได้อย่างรวดเร็วเมื่อเรียงลำดับเอาต์พุตจากคำสั่งอื่น ๆ ลงในลำดับที่มีความหมายโดยเฉพาะอย่างยิ่งเมื่อคำสั่งไม่ได้มีสวิตช์เรียงลำดับของตัวเอง
สำหรับข้อมูลเพิ่มเติมโปรดอ่านหน้าคู่มือสำหรับคำสั่ง sort