
私のファイルには次のテキストがあります
path_tryuio=$path_opt/GMT/$CARGMT_VERSION
上のテキストを下のテキストに置き換えたいです。sed
$path_track/GMT/cayu/station/GMT/$CARGMT_VERSION
ここでバージョンは変数です。
私たちは何をすべきですか?
答え1
パスにスラッシュが含まれているため、sedの区切り文字としてプレーン文字を使用したくありません/
。ここでは/
以下を使用しません^
。
$ echo $path_tryuio
/this/is/some_path
$ echo $path_tryuio | sed -e "s^/is^^"
/this/some_path
また、単一引用符の代わりに二重引用符を使用することに注意してください。シェルは一重引用符内の変数を拡張しません。
答え2
以下を修正したいとしましょう。
path_tryuio=$path_opt/GMT/$CARGMT_VERSION
=
通常、asの右側に期待されるものではなくasを使用してsed
これを達成できます。
sed -e 's|path_tryuio=$path_opt/\(GMT/$CARGMT_VERSION\)|$path_track/GMT/cayu/station/\1|'
上記のsedコマンドは一重引用符を使用しているため、変数は補間$
されず、リテラル文字列として使用されます。
inはその後にテキストがあるため、パターンスペースの終わりとは見なされ$
ません。$path_opt