2016年6月9日木曜日

シェルスクリプト変数のsedへの展開

シェル(およびスクリプト)でsedコマンドを呼び出す時の作法をまとめる (ハマったので).

(a) 変数を展開せずにそのまま渡す場合→シングルクオート(')で囲む

sed -i 's/one/$two/g' target.txt

(b) 変数を展開して渡す→ダブルクオート(")で囲む

sed -i "s/out/$two/g" target.txt

上記ははよく知られているが,変数がディレクトリの場合,展開されてしまうと展開された文字列中のスラッシュ(/)にsedが反応してしまい,意図通りに置換できない.こういう場合は区切り文字を変えるとうまく動く.

sed -i "s;path;$HOME;g" target.txt

0 件のコメント:

コメントを投稿