Если у вас нет 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 (выпущен 10.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
Я счастлив , эта функция была добавлена , но для меня, реализация не очень awkish как сила исходит от лаконичности языка и -i inplace
8 символов слишком долго имо .
Вот ссылка на мануал за официальным словом.