我要求对html文件进行58次更改。 for循环运行29次
它包含以下sed命令。 for循环的每次运行都取代了58个中的2个占位符
sed "s?$Plc_hldr1?$DateTime?;s?$Plc_hldr2?$Total?" html_format.htm >> html_final.htm
我正在使用上面的命令,它在每个循环上对原始文件进行更改并将其附加到html_final.htm文件中。
因此html_final.htm中有29份html_format.htm。
我只需要复制一份html_format.htm,并替换所有58个占位符值。
下面是整个表格的一个小例子:
01/02/2014 15
%%DDMS2RT%% %%DDMS2C%%
%%DDMS3RT%% %%DDMS3C%%
%%DDMS4RT%% %%DDMS4C%%
%%DDMS5RT%% %%DDMS5C%%
%%DDMS6RT%% %%DDMS6C%%
%%DDMS7RT%% %%DDMS7C%%
在下面的第二个for循环之后是html_final.htm的内容
01/02/2014 15
%%DDMS2RT%% %%DDMS2C%%
%%DDMS3RT%% %%DDMS3C%%
%%DDMS4RT%% %%DDMS4C%%
%%DDMS5RT%% %%DDMS5C%%
%%DDMS6RT%% %%DDMS6C%%
%%DDMS7RT%% %%DDMS7C%%
%%DDMS1RT%% %%DDMS1C%%
01/02/2014 817
%%DDMS3RT%% %%DDMS3C%%
%%DDMS4RT%% %%DDMS4C%%
%%DDMS5RT%% %%DDMS5C%%
%%DDMS6RT%% %%DDMS6C%%
%%DDMS7RT%% %%DDMS7C%%
请注意,在第二个for循环之后再次附加相同的表,第二行中的占位符包含值,第一行中的值再次被占位符替换。
我想要的是以下输出。即1张单人桌而不是多张副本,并且所有占位符都在该表内自行替换
01/02/2014 15
01/02/2014 817
01/02/2014 512
01/02/2014 765
%%DDMS5RT%% %%DDMS5C%%
%%DDMS6RT%% %%DDMS6C%%
%%DDMS7RT%% %%DDMS7C%%
我尝试使用sed -i但它在AIX unix中不可用。
我真的希望我已经解释过非常清楚地表达了这个问题,我的问题不再是XY问题!!
答案 0 :(得分:0)
最快的解决方案肯定是使用>
而不是>>
。
>>
用于将标准输出连接到指定文件。
>
用于将标准输出的输出写入指定文件,替换旧文件(如果已存在)。
即
sed "s?$Plc_hldr1?$DateTime?;s?$Plc_hldr2?$Total?" html_format.htm > html_final.htm
cp html_final.htm html_format.htm
答案 1 :(得分:0)
如果我们想象你真正的问题陈述是“我如何从我从数据库中检索的片段拼凑出一个HTML表格”,那么答案可能就像这样。
#!/bin/sh
# Output HTML header
cat <<'____HERE'
<html><head><title>Table</title></head>
<body><table>
<tr><th>Date</th><th>Result</th></tr>
____HERE
# Obtain results from database
sql 'select date, result from table;' |
# Read each record, format an HTML table fragment
while read date result; do
cat <<________HERE
<tr><td>$date</td><td>$result</td></tr>
________HERE
done
# Output HTML footer
cat <<____HERE
</table></body></html>
____HERE
脚本在其标准输出上打印HTML页面。如果您希望将其存储在文件中,请重定向到文件。
(对不起,如果我的HTML技能生锈了。已经有一段时间......)