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

7 ตัวอย่างคำสั่ง 'sort' Linux ที่น่าสนใจ - ตอนที่ 2


ในบทความที่แล้ว เราได้กล่าวถึงตัวอย่างต่างๆ ของคำสั่ง 'sort' หากพลาดสามารถติดตามได้ตามลิงค์ด้านล่าง ในโพสต์นี้ เราจะดำเนินการต่อจากที่ค้างไว้ในบทความที่แล้ว เพื่อครอบคลุมประเด็นที่เหลือของคำสั่ง ด้วยวิธีนี้ ทั้งสองบทความจะทำหน้าที่เป็นแนวทางที่ครอบคลุมสำหรับคำสั่ง Linux 'sort'

ก่อนที่เราจะดำเนินการต่อไป โปรดสร้างไฟล์ข้อความชื่อ 'month.txt' และเติมข้อมูลตามที่ระบุด้านล่าง

echo -e "mar\ndec\noct\nsep\nfeb\naug" > month.txt
cat month.txt

15. การเรียงลำดับเนื้อหาไฟล์ตามเดือน

คำสั่งต่อไปนี้จะจัดเรียงเนื้อหาของไฟล์ “month.txt” ตามลำดับเวลาตามตัวย่อของเดือนหรือชื่อโดยใช้ตัวเลือก '-M' ที่สั่งคำสั่ง '< คำสั่งsort' เพื่อจัดการข้อมูลเป็นวันที่และจัดเรียงตามนั้น

sort -M month.txt

16. การเรียงลำดับเอาต์พุตตามขนาดไฟล์ในรูปแบบที่มนุษย์สามารถอ่านได้

คำสั่งต่อไปนี้รวมคำสั่ง 'ls' และ 'sort' เพื่อดำเนินการสองงาน ขั้นแรก มันจะแสดงรายการเนื้อหาของโฮมไดเร็กตอรี่ของผู้ใช้ในรูปแบบยาว จากนั้นมันจะไพพ์ไดเร็กทอรีที่แสดงรายการนี้ไปที่คำสั่ง 'sort' เพื่อพิมพ์ขนาดไฟล์ในรูปแบบที่มนุษย์สามารถอ่านได้ ทำให้ง่ายต่อการระบุไฟล์ที่ใหญ่ที่สุดและเล็กที่สุดใน ไดเรกทอรี

ls -l /home/$USER | sort -h -k5

17. การตรวจสอบไฟล์ที่เรียงลำดับเพื่อความสอดคล้อง

ในบทความก่อนหน้านี้ เราได้สร้างไฟล์ข้อความสองไฟล์: 'sorted.txt' ในตัวอย่างหมายเลข 4 และ 'lsl.txt' ในตัวอย่างหมายเลข 6 เราทราบดีว่า ' sorted.txt' ได้รับการจัดเรียงแล้ว ในขณะที่ 'lsl.txt' ไม่ได้เรียงลำดับ

ในการตรวจสอบสถานะการจัดเรียงของทั้งสองไฟล์ เราจะใช้คำสั่ง 'sort' ซึ่งจะช่วยให้เรายืนยันได้ว่า 'sorted.txt' ยังคงอยู่ในลำดับที่ถูกต้องหรือไม่ และ 'lsl.txt' จำเป็นต้องเรียงลำดับหรือไม่

sort -c sorted.txt

หากส่งคืน 0 แสดงว่าไฟล์ถูกจัดเรียงและไม่มีข้อขัดแย้ง

sort -c lsl.txt

18. การจัดการตัวคั่นเมื่อไม่ใช้ช่องว่างในไฟล์

หาก ตัวคั่น (ตัวคั่น) ระหว่างคำคือการเว้นวรรค คำสั่ง "sort" จะตีความสิ่งใดก็ตามที่อยู่หลังช่องว่างแนวนอนเป็นคำใหม่โดยอัตโนมัติ แต่จะเกิดอะไรขึ้นเมื่อตัวคั่นไม่ใช่ช่องว่าง?

พิจารณาไฟล์ข้อความ ซึ่งเนื้อหาจะถูกคั่นด้วยสิ่งอื่นที่ไม่ใช่ ช่องว่าง เช่น '|' หรือ '\' หรือ '+' หรือ '.' หรือ ...

สร้างไฟล์ข้อความโดยแบ่งเนื้อหาด้วย + ใช้คำสั่ง cat เพื่อตรวจสอบเนื้อหาของไฟล์

echo -e "21+linux+server+production\n11+debian+RedHat+CentOS\n131+Apache+Mysql+PHP\n7+Shell Scripting+python+perl\n111+postfix+exim+sendmail" > delimiter.txt
cat delimiter.txt

ตอนนี้จัดเรียงไฟล์นี้ตามฟิลด์ ที่ 1 ซึ่งเป็นตัวเลข

sort -t '+' -nk1 delimiter.txt

ส่วนที่สองจะขึ้นอยู่กับฟิลด์ ที่ 4 ซึ่งไม่ใช่ตัวเลข

หากตัวคั่นคือ Tab คุณสามารถใช้ $'\t' แทน '+' ได้ ดังที่แสดงในตัวอย่างด้านบน

19. สุ่มเรียงลำดับเอาต์พุตตามขนาดไฟล์

จัดเรียงเอาต์พุตของคำสั่ง ls -l สำหรับโฮมไดเร็กตอรี่ของคุณตามคอลัมน์ที่ห้าซึ่งแสดงถึง 'จำนวนข้อมูล' ตามลำดับแบบสุ่ม

ls -l /home/avi/ | sort -k5 -R 

ทุกครั้งที่คุณเรียกใช้สคริปต์ด้านบน คุณมีแนวโน้มที่จะได้รับผลลัพธ์ที่แตกต่างออกไป เนื่องจากผลลัพธ์จะถูกสร้างขึ้นแบบสุ่ม

ตามที่ชัดเจนจาก หมายเลขกฎ – 2 จากบทความที่แล้ว คำสั่ง sort จะเลือกใช้บรรทัดที่ขึ้นต้นด้วยอักขระตัวพิมพ์เล็กมากกว่าอักขระตัวพิมพ์ใหญ่ ตรวจสอบตัวอย่างที่ 3 ในบทความที่แล้วด้วย โดยที่สตริง 'แล็ปท็อป' ปรากฏก่อนสตริง 'LAPTOP'

20. การเอาชนะการตั้งค่าการเรียงลำดับเริ่มต้น

จะแทนที่การตั้งค่าการเรียงลำดับเริ่มต้นได้อย่างไร ก่อนที่เราจะสามารถแทนที่การตั้งค่าการเรียงลำดับเริ่มต้นได้ เราจำเป็นต้องส่งออกตัวแปรสภาพแวดล้อม 'LC_ALL' ไปที่ 'C'

เมื่อต้องการทำเช่นนี้ ให้เรียกใช้โค้ดด้านล่างในพร้อมท์บรรทัดคำสั่งของคุณ

export LC_ALL=C

จากนั้นจัดเรียงไฟล์ข้อความ 'tecmint.txt' โดยแทนที่การตั้งค่าการจัดเรียงเริ่มต้น

sort tecmint.txt

อย่าลืมเปรียบเทียบผลลัพธ์กับผลลัพธ์ที่คุณได้รับใน ตัวอย่าง 3 และคุณยังสามารถใช้ตัวเลือก '-f' หรือที่รู้จักในชื่อ '--ignore- case' เพื่อรับเอาต์พุตที่มีการจัดระเบียบมาก

sort -f tecmint.txt

21. การรวมไฟล์อินพุตสองไฟล์ไว้ในการดำเนินการเดียว

ลองเรียกใช้ 'sort' กับไฟล์อินพุตสองไฟล์แล้วรวมเข้าด้วยกันในคราวเดียวไหม

มาสร้างไฟล์ข้อความสองไฟล์ ได้แก่ 'file1.txt' และ 'file2.txt' และเติมข้อมูลบางส่วนลงในไฟล์เหล่านั้น ใน 'file1.txt' เราจะเพิ่มตัวเลขตามที่แสดงด้านล่าง นอกจากนี้เรายังใช้คำสั่ง cat เพื่อตรวจสอบเนื้อหาของไฟล์

echo -e “5 Reliable\n2 Fast\n3 Secure\n1 open-source\n4 customizable” > file1.txt
cat file1.txt

และเติมไฟล์ที่สอง 'file2.txt' ด้วยข้อมูลบางส่วนเป็น

echo -e “3 RedHat\n1 Debian\n5 Ubuntu\n2 Kali\n4 Fedora” > file2.txt
cat file2.txt

ตอนนี้เรียงลำดับและเข้าร่วมผลลัพธ์ของทั้งสองไฟล์

join <(sort -n file1.txt) <(sort file2.txt)

บทสรุป

โดยสรุป บทความนี้ได้สำรวจแง่มุมต่างๆ ของคำสั่ง 'sort' ใน Linux เราเริ่มต้นด้วยการเรียงลำดับขั้นพื้นฐานตามลำดับตัวอักษร เสี่ยงต่อการเรียงลำดับตามตัวเลขและวันที่ หรือแม้แต่การใช้ตัวคั่นแบบกำหนดเอง นอกจากนี้เรายังได้เรียนรู้วิธีแทนที่การตั้งค่าการเรียงลำดับเริ่มต้นเพื่อให้เหมาะกับความต้องการของเรา

นอกจากนี้ เราได้พูดคุยถึงเทคนิคในการตรวจสอบว่าไฟล์ได้รับการจัดเรียงแล้วและรวมการดำเนินการ 'เรียงลำดับ' สำหรับไฟล์อินพุตหลายไฟล์หรือไม่ ด้วยความรู้ที่ได้รับจากที่นี่ คุณจะมีเครื่องมือที่มีประสิทธิภาพในการจัดเรียงและจัดระเบียบข้อมูลอย่างมีประสิทธิภาพในสภาพแวดล้อม Linux

เราหวังว่าบทความนี้จะให้ข้อมูลเชิงลึกและเป็นประโยชน์สำหรับความพยายามในการใช้บรรทัดคำสั่งของคุณ สำรวจ เรียนรู้ และฝึกฝนศิลปะของ 'เรียงลำดับ' ต่อไปเพื่อพัฒนาทักษะ Linux ของคุณ