Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

คำสั่ง uniq ใน Linux – บทช่วยสอนและตัวอย่าง

บทความนี้จะอธิบายวิธีใช้ uniq คำสั่งใน Linux เพื่อค้นหาหรือกรองบรรทัดซ้ำในไฟล์และให้ตัวอย่างการใช้งาน

ที่ uniq คำสั่งเป็นคำสั่งง่ายๆ ที่ส่งออกหรือละเว้นบรรทัดซ้ำในอินพุตหรือไฟล์ที่ให้มา

uniq ไวยากรณ์คำสั่ง

ไวยากรณ์สำหรับ uniq คำสั่งมีดังนี้:

uniq OPTIONS INPUT OUTPUT

โปรดทราบว่า:

  • ตัวเลือก เป็นรายการตัวเลือกจากตารางด้านล่าง
  • อินพุต ควรเป็นเส้นทางไปยังไฟล์ที่จะอ่าน
    • *อินพุตมาตรฐาน *ยังใช้งานได้
  • ผลลัพธ์ ควรเป็นไฟล์ที่ผลลัพธ์ของ uniq บันทึกคำสั่งแล้ว
    • ถ้าไม่ได้ให้มา เอาต์พุตมาตรฐาน จะถูกใช้ (โดยค่าเริ่มต้น สิ่งนี้จะพิมพ์ผลลัพธ์ไปยังคอนโซล)

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

ตัวเลือก

ตารางด้านล่างแสดงรายการตัวเลือกที่ใช้บ่อยจากคู่มือผู้ใช้:

-c คำนำหน้าตามจำนวนครั้ง
-d พิมพ์เฉพาะบรรทัดที่ซ้ำกัน หนึ่งบรรทัดสำหรับแต่ละกลุ่ม
-D พิมพ์บรรทัดที่ซ้ำกันทั้งหมด
-i ละเว้นความแตกต่างในกรณีที่เปรียบเทียบ
-s หลีกเลี่ยงการเปรียบเทียบอักขระ N ตัวแรก
-u พิมพ์เฉพาะบรรทัดที่ไม่ซ้ำ

คุณสามารถดูคู่มือผู้ใช้ฉบับเต็มสำหรับ uniq คำสั่งโดยเรียกใช้:

man uniq

ตัวอย่างคำสั่ง uniq

ไฟล์ตัวอย่าง

ตัวอย่างต่อไปนี้จะใช้ไฟล์ตัวอย่างต่อไปนี้เป็นอินพุต:

movies.txt

Dirty Harry
Dirty Harry
Total Recall
Bride of Frankenstein
Total Recall
Demolition Man

พฤติกรรมเริ่มต้น – การลบบรรทัดที่ซ้ำกัน

โดยค่าเริ่มต้น uniq คำสั่งจะลบบรรทัดที่ซ้ำกัน

uniq movies.txt

ซึ่งจะส่งออก:

Dirty Harry
Total Recall
Bride of Frankenstein
Total Recall
Demolition Man

โปรดทราบว่าบรรทัดที่ซ้ำกันจะถูกลบออก ไม่ซ้ำกัน. เฉพาะเส้นที่อยู่ติดกันและเหมือนกันเท่านั้นที่จะถูกลบออก

แสดงจำนวนการทำซ้ำ

ที่ -c ตัวเลือกจะขึ้นหน้าแต่ละบรรทัดด้วยจำนวนครั้งที่ทำซ้ำ:

uniq -c movies.txt

ผลลัพธ์ใด:

2 Dirty Harry
1 Total Recall
1 Bride of Frankenstein
1 Total Recall
1 Demolition Man

แสดงเฉพาะบรรทัดที่ไม่ซ้ำ

ที่ -u ตัวเลือกจะแสดงเฉพาะบรรทัดที่ไม่ซ้ำ:

uniq -u movies.txt

ซึ่งจะส่งออก:

Total Recall
Bride of Frankenstein
Total Recall
Demolition Man

แสดงเฉพาะบรรทัดที่ซ้ำกัน

ตัว -d ตัวเลือกจะแสดงเฉพาะบรรทัดที่ซ้ำกัน:

uniq -d movies.txt

ซึ่งจะส่งออก:

Dirty Harry

อีกครั้ง – โปรดทราบว่ามีการรวมหรือยกเว้นบรรทัดที่ซ้ำกัน ไม่ซ้ำเส้น. เฉพาะเส้นที่อยู่ติดกันและเหมือนกันเท่านั้นที่จะถูกประมวลผลโดย uniq สั่งเลย!

กำลังบันทึกผล

ส่งชื่อไฟล์เป็นพารามิเตอร์สุดท้ายไปยังคำสั่งเพื่อบันทึกผลลัพธ์ไปยังไฟล์นั้น:

uniq -d movies.txt duplicated.txt

การใช้การเปลี่ยนเส้นทางมาตรฐาน

ดังที่กล่าวไว้ข้างต้น ไม่จำเป็นต้องจัดหาไฟล์อินพุตและเอาต์พุตให้กับ uniq คำสั่ง

Standard Redirection สามารถส่งเอาต์พุตของคำสั่งและแอปพลิเคชันอื่นๆ ไปยัง uniq ได้ ซึ่งสามารถให้เอาต์พุตของตัวเองถูกเปลี่ยนเส้นทางไปยังโปรแกรมหรือไฟล์อื่น

cat movies.txt | uniq > output.txt

ในตัวอย่างข้างต้น คำสั่ง cat ใช้เพื่ออ่านไฟล์ตัวอย่าง จากนั้นจึงส่งเอาต์พุตไปยังไฟล์ unique สั่งการ. คำสั่ง uniq จะมีเอาต์พุตถูกเปลี่ยนเส้นทางไปยังไฟล์โดยใช้ > โอเปอเรเตอร์

เห็นได้ชัดว่าสิ่งนี้ไม่ได้ให้ฟังก์ชันพิเศษใด ๆ เลยเพียงแค่ให้เส้นทางไปยังไฟล์อินพุต/เอาท์พุต ยังคงเป็นตัวอย่างที่ชัดเจนว่าเอาต์พุตจากคำสั่งสามารถไพพ์/เปลี่ยนเส้นทางไปยังผู้อื่นได้อย่างไร