Alternative to `sed -i` on Solaris
Solution 1:
It isn't exactly the same as sed -i, but i had a similar issue. You can do this using perl:
perl -pi -e 's/find/replace/g' file
doing the copy/move only works for single files. if you want to replace some text across every file in a directory and sub-directories, you need something which does it in place. you can do this with perl and find:
find . -exec perl -pi -e 's/find/replace/g' '{}' \;
Solution 2:
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"