sed:来自bash脚本的unterminated s命令

时间:2012-01-11 21:41:34

标签: bash sed

这个确切的代码在另一个脚本中工作。我复制了这个功能,现在它保留了下来 给出未终止的'命令错误。

sed "
        s@<%BRANCH-NAME%>@${_loc_name}@g
        s@<%BRANCH-ADDR%>@${_loc_strt}@g
        s@<%BRANCH-CTY%>@${_loc_city}@g
        s@<%CUST-NAME%>@${_pat_name}@g
        s@<%CUST-ADDR%>@${_pat_addr}@
        s@<%CUST-CTY%>@${_pat_city}@
        s@<%BARCODE%>@${_barcode}@g
        s@<%DATE%>@${_date}@
        s@<%TITLE%>@${_title}@
        s@<%AUTHOR%>@${_auth}@
        s@<%PRICE%>@${_price}@" "$_template" 

响应对可能值的请求:

这些是巨大的文件,这个函数在for循环中。我用它来格式化邮件表格。更多信息:BASH: importing data from flat file into template

所以这个功能适用于某些目录,但我最近遇到了这个问题。

我在下面的kev的建议中抓住了斜线字符...除了'/'之外没有找到。或者 '沉默'换行。

find ./ -name "mail.TMP" -type f -exec grep -E '\n' {} \;

可能的值将是:

${pat_name}
Hermann Hesse c / o他的母亲

${loc_name}

Pandora SR home c / o Harmony City Hall

所以...也许这是一个引用问题?

1 个答案:

答案 0 :(得分:1)

$ _loc_name=$'xxx\nyyy'
$ echo '<%BRANCH-NAME%>' | sed "s@<%BRANCH-NAME%>@${_loc_name}@g"
sed: -e expression #1, char 21: unterminated `s' command

$var是否包含newline?请echo全部检查。

$ echo "$_loc_name"
xxx
yyy