Синтаксис
delete array
не існує в поточних версіях POSIX, але він підтримується практично всіма існуючими реалізаціями (включаючи оригінальний awk, GNU, mawk та BusyBox). Він буде доданий у майбутній версії POSIX (див. Дефект 0000544 ).
Альтернативний спосіб очищення всіх елементів масиву, який є і портативним, і сумісним зі стандартами, і який є виразом, а не твердженням, - покладатися на splitвидалення всіх існуючих елементів:
split("", array, ":")
Усі вони, в тому числі delete array, залишають змінну позначеною як змінну масиву в початковому awk, в GNU awk та в mawk (але не в BusyBox awk). Наскільки мені відомо, як тільки змінна використовується як масив, немає ніякого способу використовувати її як скалярну змінну.
delete arrayсинтаксичну помилку, хоча на сторінці man говориться, що підпис не є обов'язковим.$ 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 ... >>Більш дивно було виявити, щоdelete array[subscript], хоча і не було показано як помилка, також не працювало, і багато варіантів на нихarray[subscript] = ""були однаково неефективними.