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