bash用多行替换mime占位符

时间:2018-06-05 09:10:17

标签: bash sed mime

我在MIME中有一个模板电子邮件,部分电子邮件正文是占位符${result}

  <body>
      <p>${result}</p>
  </body>

在bash脚本中,我有一个变量$RESULT,它将下表存储在一个字符串中。

----------------------------------------------------
           Sydney    Tokyo      London     New York      
product1      100      120           0           70
product2        4       80         210          110
product3      150       50          80           20
----------------------------------------------------

我需要更换几个占位符(只是一个短字符串或一个单词),所以我使用了以下sed命令,但是它返回错误:

sed -e "s/\${subject}/$1/" \
    -e "s/\${client}/$NAME/" \
    -e "s/\${result}/$RESULT/" temp-email > client-email

错误:

sed: -e expression #3, char 64: unterminated `s' command

我知道这与\n有关,但我刚开始学习bash和MIME,不知道如何用$RESULT替换占位符

提前致谢

1 个答案:

答案 0 :(得分:2)

您可以按\n使用参数展开

替换换行符
RESULT=${RESULT//$'\n'/'\n'}

或者使用Perl而不是处理替换中的换行符:

CLIENT=$NAME RESULT=$RESULT SUBJECT=$1 perl -pe '
    s/\${(subject|client|result)}/$ENV{ uc $1 }/g'