Sintaksnya
delete array
tidak dalam versi saat ini di POSIX, tetapi didukung oleh hampir semua implementasi yang ada (termasuk awk asli, GNU, mawk, dan BusyBox). Ini akan ditambahkan dalam versi POSIX masa depan (lihat cacat 0000544 ).
Cara alternatif untuk menghapus semua elemen array, yang portabel dan memenuhi standar, dan yang merupakan ekspresi daripada pernyataan, adalah dengan mengandalkan split
penghapusan semua elemen yang ada:
split("", array, ":")
Semua ini, termasuk delete array
, biarkan variabel ditandai sebagai variabel array di awk asli, di GNU awk dan di mawk (tetapi tidak di BusyBox awk). Sejauh yang saya tahu, setelah sebuah variabel digunakan sebagai array, tidak ada cara untuk menggunakannya sebagai variabel skalar.
delete array
kesalahan sintaksis meskipun halaman manual mengatakan subskrip adalah opsional.$ awk 'BEGIN { A[1] = 0; delete A; }' awk: Syntax error at line 1 of program << BEGIN { A[1] = 0; de ... >> context is BEGIN { A[1] = 0; delete >>> A; <<< awk: illegal statement at line 1 of program << BEGIN { A[1] = 0; de ... >>
Itu lebih mengejutkan untuk menemukan bahwadelete array[subscript]
, sementara tidak ditampilkan sebagai kesalahan, juga tidak berfungsi, dan banyak varian padaarray[subscript] = ""
semua sama-sama tidak efektif.