Если вы действительно хотите просто использовать sed -i
«простым» способом, следующие функции работают как на GNU, так и на BSD / Mac sed
:
sed -i.bak 's/foo/bar/' filename
Обратите внимание на недостаток места иточка.
Доказательство:
# GNU sed
% sed --version | head -1
GNU sed version 4.2.1
% echo 'foo' > file
% sed -i.bak 's/foo/bar/' ./file
% ls
file file.bak
% cat ./file
bar
# BSD sed
% sed --version 2>&1 | head -1
sed: illegal option -- -
% echo 'foo' > file
% sed -i.bak 's/foo/bar/' ./file
% ls
file file.bak
% cat ./file
bar
Очевидно, что вы можете просто удалить файлы .bak
.