Как извлечь HTML между тегами - PullRequest
0 голосов
/ 30 ноября 2018

Мне нужно извлечь HTML между двумя тегами с помощью команды Linux.

Например: HTML-документ может иметь несколько <h2> тегов, как показано ниже

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

Мне нужно извлечь внутреннийHTML всего <h2> в виде массива и переданный другому 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 голосов
/ 30 ноября 2018

Вы можете попробовать это:

    #!/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

Надеюсь, это поможет

...