如何在标签之间提取HTML

时间:2018-11-30 11:06:29

标签: linux shell unix awk xmllint

我需要使用Linux命令在两个标签之间提取HTML。

例如:一个html文档可以具有多个<h2>标记,如下所示

<h2>
    <a id="id1" name="name1"></a>
    test1
</h2>
<h2>
    <a id="id2" name="name2"></a>
    test2
</h2>

我需要提取所有<h2>的内部HTML作为数组,并作为参数传递给其他php脚本。

必填输出:

<a id="id1" name="name1"></a>
    test1
<a id="id2" name="name2"></a>
    test2

我在下面尝试过:

file='/var/www/html/docs/test/test.htm' 

tagHtml=$(grep "<h2>" $file )
tagHtml=$(echo $metadata_tobe_added | sed 's/<h2>//g' | sed 's/<\/h2>//g')
echo $tagHtml
php /var/www/html/test.php "$tagHtml"

但是对我没有任何帮助。我希望我能够提出一个明确的问题。请帮助我。

更新:

我尝试过:

awk -F" *</?h2> *\n?" -v RS="^$" '{
for(i=2;i<=NF;i+=2)
   printf "%s", $i
}' $file

我得到的输出低于正常值。

<a id="id1" name="name1"></a>
test1
<a id="id2" name="name2"></a>
test2

现在,我想将输出放入数组,以便可以将php脚本作为参数传递。

1 个答案:

答案 0 :(得分:-1)

您可以尝试:

    #!/bin/bash

    while read line; do
        case $line in
            "<h2>") c=0
                    ;;
            "</h2>")c=1
                    ;;
                *)  if [[ c -eq 0 ]]; then
                        echo $line
                    fi
                    ;;
        esac
    done < $html_file

希望有帮助