14 ตัวอย่างที่เป็นประโยชน์ของคำสั่ง 'sort' ของ Linux - ตอนที่ 1
คำสั่ง 'sort' คือโปรแกรม Linux ที่ใช้สำหรับพิมพ์บรรทัดของไฟล์ข้อความอินพุตและต่อไฟล์ทั้งหมดตามลำดับ คำสั่ง Sort ใช้พื้นที่ว่างเป็นตัวคั่นฟิลด์และไฟล์อินพุตทั้งหมดเป็นคีย์การเรียงลำดับ สิ่งสำคัญคือต้องสังเกตว่าคำสั่ง sort ไม่ได้เรียงลำดับไฟล์จริงๆ แต่จะพิมพ์เฉพาะเอาต์พุตที่เรียงลำดับแล้วจนกว่าคุณจะเปลี่ยนเส้นทางเอาต์พุต
บทความนี้มุ่งเป้าไปที่ข้อมูลเชิงลึกเกี่ยวกับคำสั่ง 'sort' ของ Linux พร้อมตัวอย่างที่เป็นประโยชน์ 14 ตัวอย่างที่แสดงวิธีใช้คำสั่ง sort ใน Linux
1. การสร้างไฟล์ข้อความที่มีเนื้อหาที่ระบุ
ขั้นแรก เราจะสร้างไฟล์ข้อความชื่อ 'tecmint.txt' ซึ่งจะใช้สำหรับการดำเนินการตัวอย่างคำสั่ง 'sort' ในไดเร็กทอรีการทำงานของเราสำหรับงานนี้คือ ' /home/$USER/Desktop/tecmint'.
ตัวเลือก '-e
' ในคำสั่งด้านล่างเปิดใช้งานการตีความแบ็กสแลชและ /n
บอกให้คำสั่ง echo เขียนแต่ละสตริงไปยังบรรทัดใหม่
echo -e "computer\nmouse\nLAPTOP\ndata\nRedHat\nlaptop\ndebian\nlaptop" > tecmint.txt
2. ดูเนื้อหาไฟล์
ก่อนที่เราจะเริ่มต้นด้วยคำสั่ง 'sort' เรามาดูเนื้อหาของไฟล์และลักษณะที่ปรากฏโดยใช้คำสั่ง cat ต่อไปนี้ก่อน
cat tecmint.txt
3. การเรียงลำดับเนื้อหาไฟล์
คำสั่ง “sort tecmint.txt” ใช้เพื่อจัดเรียงบรรทัดในไฟล์ใหม่ตามลำดับตัวอักษรจากน้อยไปหามาก หากมีบรรทัดที่ซ้ำกัน คำสั่งจะเก็บสำเนาบรรทัดที่ไม่ซ้ำกันไว้หนึ่งสำเนา
sort tecmint.txt
หมายเหตุ: คำสั่งข้างต้นไม่ได้เรียงลำดับเนื้อหาของไฟล์ข้อความ แต่จะแสดงเฉพาะเอาต์พุตที่เรียงลำดับแล้วบนเทอร์มินัล
4. การเปลี่ยนเส้นทางเอาต์พุตที่เรียงลำดับไปยังไฟล์ใหม่
คำสั่งต่อไปนี้ใช้เพื่อจัดเรียงบรรทัดของไฟล์ข้อความ “tecmint.txt” ตามลำดับตัวอักษร จากนั้นเปลี่ยนเส้นทางเอาต์พุตที่เรียงลำดับไปยังไฟล์ใหม่ชื่อ “sorted.txt “ ซึ่งหมายความว่าไฟล์ต้นฉบับยังคงไม่เปลี่ยนแปลง และเนื้อหาที่จัดเรียงจะถูกจัดเก็บไว้ในไฟล์แยกต่างหาก
หากต้องการตรวจสอบเนื้อหา ให้ใช้คำสั่ง cat
sort tecmint.txt > sorted.txt
cat sorted.txt
5. การเรียงลำดับเนื้อหาไฟล์ในลำดับย้อนกลับ
คำสั่งต่อไปนี้ใช้เพื่อจัดเรียงบรรทัดของไฟล์ข้อความ “tecmint.txt” ในลำดับย้อนกลับ ซึ่งหมายความว่าจะจัดเรียงบรรทัดตามลำดับตัวอักษรจากมากไปหาน้อย และเอาต์พุตที่เรียงลำดับแล้วจะเปลี่ยนเส้นทางไปยังไฟล์ใหม่ ไฟล์ชื่อ “reversesorted.txt”
sort -r tecmint.txt > reversesorted.txt
cat reversesorted.txt
6. บันทึกรายการไฟล์และไดเร็กทอรี
คำสั่งต่อไปนี้ใช้เพื่อแสดงรายการเนื้อหาของโฮมไดเร็กตอรี่ของผู้ใช้ (“/home/$USER“) ในมุมมองรูปแบบยาวโดยละเอียดโดยใช้คำสั่ง ls จากนั้นคำสั่งจะเปลี่ยนเส้นทางรายการไดเร็กทอรีนี้ไปที่ ไฟล์ข้อความชื่อ “lsl.txt” ซึ่งอยู่บนเดสก์ท็อปของผู้ใช้ โดยเฉพาะในไดเรกทอรี “tecmint”
ls -l /home/$USER > /home/$USER/Desktop/tecmint/lsl.txt
cat lsl.txt
ตอนนี้ เราจะสำรวจตัวอย่างการเรียงลำดับเนื้อหาตามฟิลด์อื่นที่ไม่ใช่อักขระเริ่มต้นเริ่มต้น
7. การเรียงลำดับ 'เนื้อหาไฟล์ตามฟิลด์ที่สอง'
คำสั่งต่อไปนี้ใช้เพื่อจัดเรียงเนื้อหาของไฟล์ “lsl.txt” ตามค่าในช่องที่สองของแต่ละบรรทัด ตัวเลือก '-n'
ระบุการเรียงลำดับตัวเลข โดยถือว่าช่องที่สองเป็นตัวเลขแทนที่จะเป็นข้อความ
ตัวเลือก '-k2'
ระบุว่าเราต้องการเรียงลำดับตามฟิลด์ที่สอง เมื่อดำเนินการคำสั่งนี้ คุณจะได้รับรายการเรียงลำดับของบรรทัดใน “lsl.txt“ โดยเกณฑ์การเรียงลำดับจะเป็นค่าตัวเลขในช่องที่สองของแต่ละบรรทัด
sort -nk2 lsl.txt
8. การเรียงลำดับเนื้อหาไฟล์ตามฟิลด์ที่เก้า
คำสั่งต่อไปนี้ใช้เพื่อจัดเรียงบรรทัดในไฟล์ “lsl.txt” ตามค่าในฟิลด์ที่เก้าของแต่ละบรรทัดตามลำดับจากน้อยไปหามาก ตัวเลือก '-k9'
ระบุว่าการเรียงลำดับควรทำตามฟิลด์ที่เก้า
sort -k9 lsl.txt
9. จัดเรียงไฟล์ตามขนาดไฟล์
คำสั่งต่อไปนี้รวมคำสั่ง 'ls' และ 'sort' เพื่อแสดงรายการเนื้อหาของโฮมไดเร็กตอรี่ของผู้ใช้ในรูปแบบรายการแบบยาว จากนั้นไปป์รายการไดเร็กทอรีไปที่ 'sort -nk5'
ซึ่งจะเรียงลำดับรายการตามค่าในคอลัมน์ที่ห้า ซึ่งแสดงถึงขนาดไฟล์
ls -l /home/$USER | sort -nk5
10. การลบบรรทัดที่ซ้ำกันในไฟล์
คำสั่งต่อไปนี้จะจัดเรียงบรรทัดในไฟล์ “tecmint.txt” ตามลำดับตัวอักษรจากน้อยไปมาก และลบบรรทัดที่ซ้ำกันออกโดยใช้ตัวเลือก '-u'
ซึ่งย่อมาจาก “ไม่ซ้ำกัน” และช่วยให้แน่ใจว่าบรรทัดที่ไม่ซ้ำจะยังคงอยู่ในเอาต์พุตที่เรียงลำดับ
cat tecmint.txt
sort -u tecmint.txt
กฎจนถึงตอนนี้ (สิ่งที่เราสังเกต):
- บรรทัดที่ขึ้นต้นด้วยตัวเลขเป็นที่ต้องการในรายการและอยู่ที่ด้านบนจนกว่าจะระบุเป็นอย่างอื่น (
-r
) - บรรทัดที่ขึ้นต้นด้วยอักษรตัวพิมพ์เล็กเป็นที่ต้องการในรายการและอยู่ที่ด้านบนจนกว่าจะระบุเป็นอย่างอื่น (
-r
) - เนื้อหาจะแสดงรายการตามการปรากฏของตัวอักษรในพจนานุกรมจนกว่าจะมีการระบุเป็นอย่างอื่น (
-r
) - คำสั่งเรียงลำดับตามค่าเริ่มต้นจะถือว่าแต่ละบรรทัดเป็นสตริง จากนั้นเรียงลำดับขึ้นอยู่กับพจนานุกรมของตัวอักษร (แนะนำให้ใช้ตัวเลข ดูกฎ – 1) จนกว่าจะระบุไว้เป็นอย่างอื่น
11. การเปลี่ยนเส้นทางรายการไดเรกทอรีไปยังไฟล์
คำสั่งต่อไปนี้แสดงรายการเนื้อหาของโฮมไดเร็กตอรี่ของผู้ใช้ในรูปแบบยาว รวมถึงไฟล์และไดเร็กทอรีที่ซ่อนอยู่ จากนั้นคำสั่งจะเปลี่ยนเส้นทางรายการไดเร็กทอรีไปยังไฟล์ข้อความชื่อ “lsla.txt” ซึ่งอยู่บนเดสก์ท็อปของผู้ใช้ภายใน ไดเรกทอรี “tecmint”
ls -lA /home/$USER > /home/$USER/Desktop/tecmint/lsla.txt
cat lsla.txt
ผู้ที่คุ้นเคยกับคำสั่ง ls จะเข้าใจว่า 'ls -lA'
เทียบเท่ากับ 'ls -l'
บวกกับไฟล์ที่ซ่อนไว้ ด้วยเหตุนี้ เนื้อหาส่วนใหญ่ในคำสั่งทั้งสองนี้จะเหมือนกัน
12. การเรียงลำดับเนื้อหาของไฟล์
คำสั่งต่อไปนี้จะจัดเรียงเนื้อหาของไฟล์ข้อความสองไฟล์ ได้แก่ 'lsl.txt' และ 'lsla.txt' ตามลำดับตัวอักษรจากน้อยไปหามาก จากนั้นจึงรวมและแสดงเนื้อหาที่จัดเรียงใน อาคารผู้โดยสาร
sort lsl.txt lsla.txt
สังเกตการซ้ำกันของไฟล์และโฟลเดอร์
13. การลบบรรทัดที่ซ้ำกันในไฟล์
คำสั่งต่อไปนี้จะผสานและจัดเรียงเนื้อหาของไฟล์ข้อความสองไฟล์ ได้แก่ 'lsl.txt' และ 'lsla.txt' โดยเรียงจากน้อยไปหามากโดยลบบรรทัดที่ซ้ำกันออกโดยใช้ ตัวเลือก '-u'
ซึ่งช่วยให้มั่นใจได้ว่าบรรทัดที่ไม่ซ้ำกันจะยังคงอยู่ในเอาต์พุตที่เรียงลำดับ
sort -u lsl.txt lsla.txt
โปรดสังเกตว่ารายการที่ซ้ำกันได้ถูกละเว้นจากเอาต์พุต นอกจากนี้ คุณยังสามารถบันทึกผลลัพธ์เป็นไฟล์ใหม่ได้ด้วยการเปลี่ยนเส้นทาง
14. การเรียงลำดับเอาต์พุตตามหลายฟิลด์โดยใช้ตัวคั่นแบบกำหนดเอง
คำสั่งต่อไปนี้รวมคำสั่ง 'ls' และ 'sort' เพื่อแสดงรายการเนื้อหาของโฮมไดเร็กตอรี่ของผู้ใช้ในรูปแบบยาว จากนั้นไปป์รายการไดเร็กทอรีไปที่ '< คำสั่งsort' ซึ่งเรียงลำดับผลลัพธ์ตามคอลัมน์และฟิลด์ที่ระบุ
ls -l /home/$USER | sort -t "," -nk2,5 -k9
นี่คือรายละเอียดของคำสั่ง:
-t ","
– ระบุว่าใช้เครื่องหมายจุลภาค(",")
เป็นตัวคั่นฟิลด์-nk2,5
– ระบุการเรียงลำดับตามค่าตัวเลขในคอลัมน์ 2 ถึง 5 ซึ่งโดยทั่วไปจะแสดงถึงสิทธิ์และรายละเอียดการเป็นเจ้าของ-k9
– จัดเรียงผลลัพธ์เพิ่มเติมตามคอลัมน์ที่เก้า ซึ่งแสดงถึงขนาดไฟล์
นั่นคือทั้งหมดที่สำหรับตอนนี้. ในบทความถัดไป เราจะเจาะลึกตัวอย่างคำสั่ง sort ที่ละเอียดยิ่งขึ้นสำหรับคุณ
โปรดแชร์ แสดงความคิดเห็น กดไลค์ และช่วยให้เราเข้าถึงผู้ชมในวงกว้างต่อไป