Trừ khi bạn có GNU awk 4.1.0 trở lên ...
Bạn sẽ không có tùy chọn như -i
tùy chọn của sed nên thay vào đó:
$ awk '{print $0}' file > tmp && mv tmp file
Lưu ý: đó -i
không phải là phép thuật, nó cũng đang tạo một tệp tạm thời sed
chỉ xử lý nó cho bạn.
Kể từ GNU awk 4.1.0 ...
GNU awk
đã thêm chức năng này trong phiên bản 4.1.0 (phát hành 10/05/2013) . Nó không phải là chuyển tiếp thẳng như chỉ đưa ra -i
tùy chọn như được mô tả trong các ghi chú được phát hành:
Tùy chọn -i mới (từ xgawk) được sử dụng để tải các tệp thư viện awk. Điều này khác với -f ở chỗ đối số không phải tùy chọn đầu tiên được coi là tập lệnh.
Bạn cần sử dụng inplace.awk
tệp bao gồm kèm theo để gọi tiện ích mở rộng đúng cách như sau:
$ cat file
123 abc
456 def
789 hij
$ gawk -i inplace '{print $1}' file
$ cat file
123
456
789
Biến INPLACE_SUFFIX
có thể được sử dụng để chỉ định phần mở rộng cho tệp sao lưu:
$ gawk -i inplace -v INPLACE_SUFFIX=.bak '{print $1}' file
$ cat file
123
456
789
$ cat file.bak
123 abc
456 def
789 hij
Tôi rất vui vì tính năng này đã được thêm vào nhưng với tôi, việc triển khai không quá khủng khiếp vì sức mạnh đến từ sự đơn giản của ngôn ngữ và imo-i inplace
dài 8 ký tự .
Đây là một liên kết đến hướng dẫn cho từ chính thức.