Chyba że masz GNU awk 4.1.0 lub nowszy ...
Nie ma takiej opcji jako opcji SED -i
więc zamiast zrobić:
$ awk '{print $0}' file > tmp && mv tmp file
Uwaga: -i
nie jest magią, tworzy także tymczasowy plik sed
po prostu go obsługuje.
Jak GNU awk 4.1.0 ...
GNU awk
dodaje tę funkcjonalność w wersji 4.1.0 (wydany 05.10.2013). To nie jest tak prosto, jak tylko do przodu dając możliwość -i
jak opisano w opublikowanych notach:
Nowa opcja -i (od xgawk) służy do ładowania plików bibliotecznych awk. Różni się od -f tym, że pierwszy argument nieoparty na liście jest traktowany jako skrypt.
Trzeba użyć dołączone inplace.awk
zawierać plik, aby wywołać rozszerzenie właściwie tak:
$ cat file
123 abc
456 def
789 hij
$ gawk -i inplace '{print $1}' file
$ cat file
123
456
789
Zmienna INPLACE_SUFFIX
mogą być wykorzystane do określenia rozszerzenia dla 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 przerażająca, ponieważ moc jest ze zwięzłością języka, a -i inplace
to 8 c znaki do długiego I.M.O.
Oto link do manual dla oficjalnego słowa.
Zobacz także http://serverfault.com/a/547331/313521 dla bardziej ogólnej odpowiedzi na "edytowanie pliku w miejscu z przekierowaniem". – Wildcard