On Linux sed -i
will modify the input files in place. It doesn't work on Solaris, though.
sed -i '$ s/OLD/NEW/g' test
sed: illegal option -- i
What can I use in place of sed -i
on Solaris?
You'll need to replicate -i
's behavior yourself by storing the results in a temp file and then replacing the original file with the temp file. This may seem inelegant but that's all sed -i
is doing under the covers.
sed '$ s/OLD/NEW/g' test > test.tmp && cat test.tmp > test && rm test.tmp
If you care you could make it a bit more robust by using mktemp
:
tmp=$(mktemp test.XXXXXX)
sed '$ s/OLD/NEW/g' test > "$tmp" && cat "$tmp" > test && rm "$tmp"