2
awk '! a [$ 0] ++' ทำงานอย่างไร
หนึ่งซับนี้จะลบบรรทัดที่ซ้ำกันออกจากการป้อนข้อความโดยไม่ต้องเรียงลำดับล่วงหน้า ตัวอย่างเช่น: $ cat >f q w e w r $ awk '!a[$0]++' <f q w e r $ รหัสเดิมที่ฉันพบใน internets อ่านได้: awk '!_[$0]++' นี่เป็นสิ่งที่ทำให้ฉันงุนงงมากขึ้นเมื่อฉัน_มีความหมายพิเศษใน awk เช่นใน Perl แต่กลายเป็นชื่อของอาร์เรย์ ตอนนี้ฉันเข้าใจตรรกะเบื้องหลังหนึ่งซับ: แต่ละบรรทัดอินพุตถูกใช้เป็นคีย์ในอาร์เรย์แฮชดังนั้นเมื่อเสร็จสมบูรณ์แฮชจะมีบรรทัดที่ไม่ซ้ำกันตามลำดับการมาถึง สิ่งที่ฉันต้องการเรียนรู้คือสัญกรณ์นี้ตีความโดย awk ได้อย่างไร เช่นความหมายของสัญญาณบาง ( !) และองค์ประกอบอื่น ๆ ของข้อมูลโค้ดนี้ มันทำงานยังไง?