В Linux sed -i
изменится входные файлы на месте. Однако он не работает в Solaris.
sed -i '$ s/OLD/NEW/g' test
sed: illegal option -- i
Что я могу использовать вместо sed -i
в Solaris?
Вам нужно воспроизвести поведение -i
самостоятельно, сохранив результаты во временном файле, а затем заменив исходный файл временным файлом. Это может показаться неэлегантным, но это все, что sed -i
делает под прикрытием.
sed '$ s/OLD/NEW/g' test > test.tmp && cat test.tmp > test && rm test.tmp
Если вам не все равно, вы можете сделать его немного более надежным, используя mktemp
:
tmp=$(mktemp test.XXXXXX)
sed '$ s/OLD/NEW/g' test > "$tmp" && cat "$tmp" > test && rm "$tmp"