シェル(およびスクリプト)で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 件のコメント:
コメントを投稿