sedコマンドで「/」 と 「&」を含む場合のエクケープ処理
シェルスクリプト内でテキストファイル内の一部の文字を置換する処理があって、半角空白と「&」を含んでいて、置換がうまく処理されずに変数名が残ってしまいました
$ cat in.txt CORPORATION 御中 $ sh sed_file.sh #!/bin/bash CO="ABC D&E株式会社" sed -e "s/CORPORATION/${CO}/g" in.txt > out.txt cat MAILBODY # 出力結果 ABC DCORPORATION 御中
始めは半角空白があったので、それがで原因と思っていたら、「&」文字のエスケープ処理を忘れたいたのが原因でした。sedコマンドを実行する前に、「&」文字を含む変数をエスケープ処理したら解決しました。
念のために「/」と「&」を下記のようにエスケープ処理しています
OUT=$(echo “$TEST" | sed -e 's/[\/&]/\\&/g’)
$ sh sed_file.sh #!/bin/bash CO="ABC D&E株式会社" CO_ESCAPED=$(echo "$CO" | sed -e 's/[\/&]/\\&/g') sed -e "s/CORPORATION/${CO_ESCAPED}/g" in.txt > out.txt cat MAILBODY # 出力結果 ABC D&E株式会社 御中
ディスカッション
コメント一覧
まだ、コメントがありません