Альтернатива `sed -i` в Solaris

В Linux sed -i изменится входные файлы на месте. Однако он не работает в Solaris.

sed -i '$ s/OLD/NEW/g' test        
sed: illegal option -- i

Что я могу использовать вместо sed -i в Solaris?

27
задан John Kugelman supports Monica 6 December 2018 в 13:19
поделиться

1 ответ

Вам нужно воспроизвести поведение -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"
20
ответ дан 28 November 2019 в 05:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: