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