我需要在以下两个特定标签(html文件)之间插入代码块(实际上,这是一个adsense广告脚本):
</style>
<table border="1" class="dataframe">
我需要将其插入这两个标签的第三次出现。 典型的Adsense块的形式为:
<script async
src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
</script>
<script>
lorem ipsum...
</script>
最后,我需要这样的东西:
</style>
<script async
src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
</script>
<script>
lorem ipsum...
</script>
<table border="1" class="dataframe">
我已经使用sed
插入了代码块并指出了行号,在这种情况下,由于行号可以更改,因此无法这样做。
非常感谢您的帮助。
答案 0 :(得分:1)
如果可以使用bash,请尝试此操作。这个解决方案不是很快,但是应该可以。
insert_rubbish.sh
#!/bin/bash
StartPattern='</style>'
StopPattern='<table border="1" class="dataframe">'
content=$(cat << EOT
<script async
src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
</script>
<script>
lorem ipsum...
</script>
EOT
)
# loop over all lines
while read -r line; do
# if pattern found
if [[ $line =~ $StopPattern && $lastline =~ $StartPattern ]]; then
# is it the third fund? --> then print content
if [[ $count == 2 ]]; then
printf "%s\n" "$content"
fi
# count pattern match
(( count++ ))
fi
# write line
printf "%s\n" "$line"
# save line for next pattern match
lastline="$line"
done < "$1"
用法
insert_rubbish.sh "/path/to/your/file.html" > output.html