Вам нужно будет самому повторить поведение -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"