Shell Bash将内容插入第n个html标记
我的Shell Bash将内容插入第n个html标记,shell,sed,Shell,Sed,我的Template.html包含两个 sed -i -e '/<pre>/r file1.txt' Template.html file2.txt 预期结果: 你好 世界 也许 六月 sed用于执行简单的s/old/new,仅此而已。听起来您想要的是这样的(将tgt设置为1或2,或者您希望在其后插入块的任何一个): awk-v tgt=1' NR==FNR{rec=rec$0 ORS;next} {print} //&&(++cnt==tgt){printf“%s”,rec}
Template.html
包含两个
sed -i -e '/<pre>/r file1.txt' Template.html
file2.txt
预期结果:
你好
世界
也许
六月
sed用于执行简单的s/old/new,仅此而已。听起来您想要的是这样的(将tgt设置为1或2,或者您希望在其后插入块的任何一个
):
awk-v tgt=1'
NR==FNR{rec=rec$0 ORS;next}
{print}
//&&(++cnt==tgt){printf“%s”,rec}
'file1.txt Template.html
但是,无论是file1.txt的示例还是预期的输出,这都只是一个未经测试的猜测。这可能适用于您(GNU-sed):
sed-e'/{x;s/^/x/;/^x\{1}$/{x;r file1.txt'-e'x};x}'Template.html
遇到带有所需标记的行时,在保留空间中增加一个计数器
如果计数器与所需数字匹配(在本例中为1),则追加文本文件
因此,下面将在第三次出现标记后追加文件
sed-e'/{x;s/^/x/;/^x\{3}$/{x;r file1.txt'-e'x};x}'Template.html
不确定我是否得到了它,这篇文章的问题在哪里?请更清楚地回答您的问题。已清楚地更新。您发布了示例输入,但忘记发布预期输出。请参阅,特别是关于创建@itsraja的部分:这个问题与bash
标记无关。你为什么一直在添加它
<html>
<body>
<h1>
<pre>
</pre>
<div>
<pre>
</pre>
</body>
</html>
hello
world
may
june
<html>
<body>
<h1>
<pre>
hello
world
</pre>
<div>
<pre>
may
june
</pre>
</body>
</html>
awk -v tgt=1 '
NR==FNR { rec = rec $0 ORS; next }
{ print }
/<pre>/ && (++cnt == tgt) { printf "%s", rec }
' file1.txt Template.html
sed -e '/<pre>/{x;s/^/x/;/^x\{1\}$/{x;r file1.txt' -e 'x};x}' Template.html
sed -e '/<pre>/{x;s/^/x/;/^x\{3\}$/{x;r file1.txt' -e 'x};x}' Template.html