sed:无法找到并替换

时间:2018-01-31 06:41:02

标签: bash unix sed

我正在尝试使用分配给名为input的变量的输入替换文本文件中的customernumber。但无法使用sed完成此操作,下面是我正在尝试的方法

input=$(cat customernumber.txt)
echo $input
cat CUSTOMER_REPORT.txt | sed -e s/%customernumbers%/$input/g > temp.sql

我的customernumber.txt包含值(12345,67890),我的CUSTOMER_REPORT.txt包含以下值:

SELECT CUSTOMERNUMBER,ORDERNUMBER
FROM ORDER WHERE CUSTOMERNUMBER IN %customernumbers% WITH UR;

我收到以下错误:

sed: -e expression #1, char 31: unterminated `s' command

如何用$ input中的值替换%customernumbers%?除了sed之外还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

您应该将替换sed命令放在双引号之间

sed -e "s/%customernumbers%/$input/g" > temp.sql

调试一下后:

cat CUSTOMER_REPORT.txt | sed -e "s/%customernumbers%/(12345,67890)/g" > temp.sql 

工作正常,所以我们缩小了根本原因,直到我们使用customernumber.txtwc -l customernumber.txt

到达文件cat -vTE customernumber.txt 经过一些修复后,它工作正常。