Lapisan satu ini menghapus garis duplikat dari input teks tanpa pra-sortasi.
Sebagai contoh:
$ cat >f
q
w
e
w
r
$ awk '!a[$0]++' <f
q
w
e
r
$
Kode asli yang saya temukan di internet berbunyi:
awk '!_[$0]++'
Ini bahkan lebih membingungkan bagi saya karena saya mengambil _
arti khusus dalam awk, seperti di Perl, tetapi ternyata hanya nama array.
Sekarang, saya mengerti logika di balik one-liner: setiap baris input digunakan sebagai kunci dalam array hash, dengan demikian, setelah selesai, hash berisi garis-garis unik dalam urutan kedatangan.
Yang ingin saya pelajari adalah bagaimana tepatnya notasi ini ditafsirkan oleh awk. Misalnya apa arti tanda bang ( !
) dan elemen lain dari cuplikan kode ini.
Bagaimana cara kerjanya?