我有一项任务是将文本文件的内容解析为HTML的一部分。例如,我有一个文件CONTENTS.txt
,其内容的格式如下:
<div class="page-header">
<h3>TITLE1</h3>
</div>
<p>CONTENT1 BLABLABLALBA</p>
<p>CONTENT1 BLALALBALBALA</p>
<br/>
<div class="page-header">
<h3>TITLE2</h3>
</div>
<p>CONTENT2 BLABLABLALBA</p>
<p>CONTENT2 BLALALBALBALA</p>
<p>CONTENT2 BLALALBALBALA</p>
<br/>
<div class="page-header">
<h3>TITLE3</h3>
</div>
<p>CONTENT3 BLABLABLALBA</p>
我想要的是将它们插入HOME.html
中HTML的某些部分,如
<div class="span6">
.................
</div>
如何在bash脚本中执行此操作?
答案 0 :(得分:0)
不确定问题是否充分有意义
https://github.com/vahidhedayati/replace_content看看这里 - 使用replace.sh你可以运行
replace.sh "TAG" "new content" file.txt
然后,这会将文本文件中的标记替换为您需要的相关html内容 - 然后您可以将该文件复制为name.html或其他任何内容。
我仍然不确定我是否理解了你的问题:
假设您有一个名为file1.txt的文件
<div class="page-header">
<h3>TEMPLATE_TITLE</h3>
</div>
<p>CONTENT1</p>
<p>CONTENT1_TAG1</p>
<br/>
你可以跑
replace.sh“TEMPLATE_TITLE”“新标题”file1.txt
replace.sh“CONTENT1”“新内容”file1.txt
replace.sh“CONTENT1_TAG1”“新标签”file1.txt
将每次调用替换您要替换的标记 - 您可以向其添加整个段,因此将标记替换为html的段.... -
通过更新replace.sh .....
获得进一步的创意,让它将输出写入新文件本身等答案 1 :(得分:0)
试试这个:
line_number=$(sed -n '/<div class="span6">/=' home.html)
head -n $line_number home.html > output.html
cat contents.txt >> output.html
tail -n +$(($line_number+1)) home.html >> output.html
答案 2 :(得分:0)
一种可能性,使用sed
:
在HOME.html
文件中,将占位符放在要插入CONTENTS.txt
的位置,例如,
<div class="span6">
@@CONTENTS.txt@@
</div>
然后使用sed
:
sed -e '/@@CONTENTS.txt@@/{rCONTENTS.txt' -e ';d}' HOME.html
关于你的评论:
你应该有一个模板文件,比如HOME-template.html
包含你的结构和占位符,比如说:
<div class="span6">
@@CONTENTS.txt@@
</div>
您应该像这样生成HOME.html
文件:
sed -e '/@@CONTENTS.txt@@/{rCONTENTS.txt' -e ';d}' HOME-template.html > HOME.html
因此,每次更改CONTENTS.txt
文件时,都会运行此命令,HOME.html
将反映更改。
答案 3 :(得分:0)
将此处文档与cat
命令一起使用。
cat <<EOF > HOME.html
<div class="span6">
$(<CONTENTS.txt)
</div>
EOF