it-swarm-ja.com

AIXでの文字列置換シェルスクリプト

AIXを使用していますが、使用しているsedのバージョンで使用できる-iオプションがありません。

sed: illegal option -- i
Usage:  sed [-n] Script [File ...]
        sed [-n] [-e Script] ... [-f Script_file] ... [File ...]

スクリプトを使用して、ファイルの1つにあるディレクトリのパスを置き換えたい。私はこのようにしようとしています:

WORKDIR="/workdir/liv/spool"
ARCHIVE="u/user/new"

sed 's/$WORKDIR/$ARCHIVE/ig' test.dat > abc
mv abc test.dat

エラーが発生します:

sed: Function s/$WORKDIR/$STRATIXARCHIVE/ig cannot be parsed.

$ WORKDIRと同じすべてのオカレンスを$$ ARCHIVEに置き換えたい

1
Grv

シェル変数は二重引用符( ")の間でのみ解決されます。

sed "s/$WORKDIR/$ARCHIVE/ig" test.dat > abc(二重引用符)

スラッシュがなければ機能します。 Sedは任意の文字を使用してこれらの入力フィールドを区切ることができ、スラッシュはディレクトリパスに使用されるため、おそらく最良の選択ではありません。たとえば、代わりにこれを使用できます。

sed "s#$WORKDIR#$ARCHIVE#ig" test.dat > abc

1
Jack