บทความนี้จะอธิบายวิธีใช้ 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 จะมีเอาต์พุตถูกเปลี่ยนเส้นทางไปยังไฟล์โดยใช้ > โอเปอเรเตอร์
เห็นได้ชัดว่าสิ่งนี้ไม่ได้ให้ฟังก์ชันพิเศษใด ๆ เลยเพียงแค่ให้เส้นทางไปยังไฟล์อินพุต/เอาท์พุต ยังคงเป็นตัวอย่างที่ชัดเจนว่าเอาต์พุตจากคำสั่งสามารถไพพ์/เปลี่ยนเส้นทางไปยังผู้อื่นได้อย่างไร