Chyba że masz GNU awk 4.1.0 lub nowszy ...
Nie będziesz mieć takiej opcji jak opcja seda, -i
więc zamiast tego zrób:
$ awk '{print $0}' file > tmp && mv tmp file
Uwaga: -i
to nie jest magia, to również tworzenie pliku tymczasowego, który sed
obsługuje go za Ciebie.
Od GNU awk 4.1.0 ...
GNU awk
dodano tę funkcjonalność w wersji 4.1.0 (wydana 05.10.2013) . Nie jest to tak proste, jak po prostu podanie -i
opcji, 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.awk
poprawnie 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_SUFFIX
moż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 inplace
jest o 8 znaków za długa imo .
Oto link do podręcznika z oficjalnym słowem.
awk
może użyć poniższego linku również stackoverflow.com/questions/59243104/ ... fyi, proszę.