Если вы действительно хотите просто использовать 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
.