我有以下HTML代码:
<!DOCTYPE html>
<html>
...
<main>
<div class=postLink>
<a href="asdfa.html"> Write your title here</a>
<div id="description"> Write the description of the post. It will show in the index.</div>
<div id="datePost">19-06-2017</div>
<div id="tags">
</div>
</div>
<div class=postLink>
<a href="aasdf.html"> Write your title here</a>
<div id="description"> Write the description of the post. It will show in the index.</div>
<div id="datePost">19-06-2017</div>
<div id="tags">
</div>
</div>
...
</main>
<footer>
</footer>
</body>
</html>
我想在div中插入标签,但只有一次。
我试着这样做:
for tag in $tags
do
sed -i "/<div id=\"tags\">/a <a href=\"$publicDir\/tags\/$tag\">$tag</a>" $publicDir/index.html
done
但这会产生所有postLink都有所有标签。
我只希望postlink的标签不是其他的postLink。像那样:
<div class=postLink>
<a href="asdfa.html"> Write your title here</a>
<div id="description"> Write the description of the post. It will show in the index.</div>
<div id="datePost">19-06-2017</div>
<div id="tags">
<a href="publicDir/tags/Hellotag"> Hellotag</a>
<a href="publicDir/tags/Othertag"> Othertag</a>
</div>
</div>
<div class=postLink>
<a href="asdfa.html"> Write your title here</a>
<div id="description"> Write the description of the post. It will show in the index.</div>
<div id="datePost">19-06-2017</div>
<div id="tags">
<a href="publicDir/tags/Byetag"> Byetag</a>
<a href="publicDir/tags/Xtag"> Xtag</a>
</div>
</div>
抱歉我的英文不好。
答案 0 :(得分:0)
我从另一个角度解决了这个问题。 我所做的是创建一个名为string的变量,其中包含html代码&#34; postlink&#34;之前标签必须在哪里。然后for循环追加标签代码,最后添加div结束。
所以我只有一个&#34; postlink&#34;使用标签和标签不会影响以前在html页面上可能存在的postlink。
string="<div class=postLink>\n\t <a href=\"$file.html\">$title</a>\n <div id=\"description\">$description</div>\n<div id=\"datePost\">$date</div>\n<div id=\"tags\">\n"
for tag in $tags
do
string+="<a href=\"$publicDir\/tags\/$tag\">$tag</a>\n"
done
string+="</div>\n</div>"
sed -i "/<main>/a $string" "$publicDir/index.html"
感谢John Goofy和123试图帮助我。 :)
答案 1 :(得分:0)
通过使用awk并在标签div中传递要打印的所需文本作为变量应该实现您所需要的。您可以使用for循环在tags目录中的不同文件中构造此变量,只需确保在需要时添加新行和制表符。
awk -v var="\n\t<a href=\"publicDir/tags/Byetag\"\> Byetag</a>\n\t<a href=\"publicDir/tags/Xtag\"> Xtag</a>\n" '{ if ( $0 ~ "tags" && done != 1 ) { print $0var;done=1 } else { printf $0"\n" } }' html
如果html是有问题的文件,我们将文本传递给一个名为var的变量,然后我们在其中找到一个包含标签的行(你可以在必要时“确定”reg表达式)我们打印行和附加文本。然后将变量done设置为1以确保if语句在下一个div标记上失败并且不打印文本。