Якщо у вас GNU awk 4.1.0 або пізнішої версії ...
У вас не буде такої опції, як опція sed, -i
тому замість цього виконайте:
$ awk '{print $0}' file > tmp && mv tmp file
Зауважте: -i
це не магія, воно також створює тимчасовий файл, sed
просто обробляє його для вас.
Станом на GNU awk 4.1.0 ...
GNU awk
додав цю функціональність у версії 4.1.0 (випущена 05.05.2013) . Це не так прямо вперед, як просто надання -i
опції, як описано у випущених примітках:
Нова опція -i (від xgawk) використовується для завантаження файлів бібліотеки awk. Це відрізняється від -f тим, що перший аргумент, що не є варіантом, трактується як сценарій.
Потрібно використовувати пакетний inplace.awk
файл включення, щоб викликати розширення належним чином так:
$ cat file
123 abc
456 def
789 hij
$ gawk -i inplace '{print $1}' file
$ cat file
123
456
789
Змінна INPLACE_SUFFIX
може бути використана для визначення розширення для файлу резервної копії:
$ gawk -i inplace -v INPLACE_SUFFIX=.bak '{print $1}' file
$ cat file
123
456
789
$ cat file.bak
123 abc
456 def
789 hij
Я щасливий, що ця функція була додана, але для мене реалізація не дуже хитра, оскільки влада виходить з лаконічності мови і -i inplace
має 8 символів занадто довгий imo .
Ось посилання на посібник для офіційного слова.