Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell Bash将内容插入第n个html标记_Shell_Sed - Fatal编程技术网

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