我将日期存储在变量中,并在sed中使用它,如下所示。
DateTime=`date "+%m/%d/%Y"`
Plc_hldr1=`head -$i place_holder.txt | tail -1 | awk -F ' ' '{ print $1 }'`
Plc_hldr2=`head -$i place_holder.txt | tail -1 | awk -F ' ' '{ print $2 }'`
sed "s/$Plc_hldr1/$DateTime/;s/$Plc_hldr2/$Total/" html_format.htm >> /u/raskar/test/html_final.htm
运行sed命令时,我收到以下错误。
sed: 0602-404 Function s/%%DDMS1RT%%/01/02/2014/;s/%%DDMS1C%%/1235/ cannot be parsed.
我认为这种情况正在发生,因为日期包含以下输出,其中包括斜杠'/'
01/02/2014
我在日期周围尝试了不同的引号。我如何让它运行?
答案 0 :(得分:4)
将分隔符更改为不会出现在模式中的其他内容,例如:
sed "s?$Plc_hldr1?$DateTime?;s?$Plc_hldr2?$Total?"
答案 1 :(得分:0)
不是直接断言,而是替换
Plc_hldr1=`head -$i place_holder.txt | tail -1 | awk -F ' ' '{ print $1 }'`
Plc_hldr2=`head -$i place_holder.txt | tail -1 | awk -F ' ' '{ print $2 }'`
通过
Plc_hldr1=`sed -n "$i {s/ .*//p;q}"`
Plc_hldr2=`sed -n "$i {s/[^ ]\{1,\} \{1,\}\([^ ]\{1,\}\) .*/\1/p;q}"`
和aix / ksh
sed -n "$i {s/\([^ ]\{1,\} \{1,\}[^ ]\{1,\}\) .*/\1/p;q}" | read Plc_hldr1 Plc_hldr2