Chyba że masz GNU awk 4.1.0 lub nowszy ...
Nie będziesz mieć takiej opcji jak opcja seda, -iwięc zamiast tego zrób:
$ awk '{print $0}' file > tmp && mv tmp file
Uwaga: -ito nie jest magia, to również tworzenie pliku tymczasowego, który sedobsługuje go za Ciebie.
Od GNU awk 4.1.0 ...
GNU awkdodano tę funkcjonalność w wersji 4.1.0 (wydana 05.10.2013) . Nie jest to tak proste, jak po prostu podanie -iopcji, jak opisano w opublikowanych uwagach:
Nowa opcja -i (z xgawk) służy do ładowania plików bibliotek awk. Różni się to od -f tym, że pierwszy argument niebędący opcją jest traktowany jako skrypt.
Aby inplace.awkpoprawnie wywołać rozszerzenie, musisz użyć dołączonego pliku dołączanego :
$ cat file
123 abc
456 def
789 hij
$ gawk -i inplace '{print $1}' file
$ cat file
123
456
789
Zmiennej INPLACE_SUFFIXmożna użyć do określenia rozszerzenia pliku kopii zapasowej:
$ gawk -i inplace -v INPLACE_SUFFIX=.bak '{print $1}' file
$ cat file
123
456
789
$ cat file.bak
123 abc
456 def
789 hij
Cieszę się, że ta funkcja została dodana, ale dla mnie implementacja nie jest zbyt dziwna, ponieważ moc pochodzi ze zwięzłości języka i -i inplacejest o 8 znaków za długa imo .
Oto link do podręcznika z oficjalnym słowem.
awkmoże użyć poniższego linku również stackoverflow.com/questions/59243104/ ... fyi, proszę.