ค้นหาเว็บไซต์

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 ที่ละเอียดยิ่งขึ้นสำหรับคุณ

โปรดแชร์ แสดงความคิดเห็น กดไลค์ และช่วยให้เราเข้าถึงผู้ชมในวงกว้างต่อไป