Linuxでは、sed -i
は入力ファイルを適切に変更します。ただし、Solarisでは機能しません。
sed -i '$ s/OLD/NEW/g' test
sed: illegal option -- i
Solarisでsed -i
の代わりに何を使用できますか?
結果を一時ファイルに保存し、元のファイルを一時ファイルに置き換えることにより、-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"
Sed -iとまったく同じではありませんが、同様の問題がありました。これはPerlを使用して行うことができます。
Perl -pi -e 's/find/replace/g' file
コピー/移動の実行は、単一ファイルに対してのみ機能します。ディレクトリとサブディレクトリ内のすべてのファイルでテキストを置き換える場合は、適切な場所で行う必要があります。あなたはPerlでこれを行うことができます:
find . -exec Perl -pi -e 's/find/replace/g' '{}' \;