เพียงเปลี่ยนคำสั่ง awk ของคุณเป็นคอลัมน์ที่คุณต้องการดำเนินการเพื่อลบบรรทัดที่ซ้ำกันตาม (ในคอลัมน์กรณีที่สามของคุณ):
awk '!seen[$3]++' filename
คำสั่งนี้บอกawk
บรรทัดที่จะพิมพ์ ตัวแปร$3
เก็บเนื้อหาทั้งหมดของคอลัมน์ 3 และวงเล็บเหลี่ยมคือการเข้าถึงอาร์เรย์ ดังนั้นสำหรับแต่ละคอลัมน์ที่สามของบรรทัดในชื่อไฟล์โหนดของอาร์เรย์ที่มีชื่อseen
จะเพิ่มขึ้นและบรรทัดที่พิมพ์หากเนื้อหาของโหนดนั้น (คอลัมน์ 3) ไม่ได้ ( !
) ตั้งก่อนหน้านี้
เหนือawk
คำสั่งจะทำงานถ้าคอลัมน์ของคุณในแฟ้มใส่จะถูกคั่นด้วยspace
หรือTab
ระหว่างตัวเองถ้าคอลัมน์คั่นด้วยกับสิ่งอื่นคุณจะต้องบอกให้ awk กับ-F
ตัวเลือก ตัวอย่างเช่นถ้าคอลัมน์ทั้งหมดคั่นด้วยเครื่องหมายจุลภาค ( ,
) และต้องการลบเส้นฐานในคอลัมน์ที่สามใช้-F','
ตัวเลือก
awk -F',' '!seen[$3]++' filename
-u
จะลบบรรทัดที่ซ้ำกันเท่านั้นไม่ใช่คีย์ที่ซ้ำกัน... แต่ฉันผิด