Прочитайте и измените HTML с помощью оболочки - PullRequest
0 голосов
/ 30 января 2019

Как я могу прочитать html и изменить тег в нем.

Например: /var/www/html/test.html имеет следующее содержимое:

<h2>
   test1
</h2>
<h2>
   test2
</h2>
<h2>
   test3
</h2>

Мне нужно перебрать <h2>и добавьте к нему атрибут name.

Запрошенный результат:

<h2 name="1">
  test1
</h2>
<h2 name="2">
  test2
</h2>
<h2 name="3">
  test3
</h2>

Я пытался:

file=/var/www/html/test.html
awk -v source_str="<h2>" -v repl_str="<h2 name=\"$count\">" '{
        gsub(source_str,repl_str)
          print
        }' $file > '/tmp/test1'
 mv '/tmp/test1' $file

1 Ответ

0 голосов
/ 30 января 2019

Использование с для изменения документа:

ruby -rnokogiri -e '
  h2num = 1
  document = Nokogiri::HTML.parse(open(ARGV.shift))
  document.css("h2").each do |h2|
    h2["name"] = h2num
    h2num += 1
  end
  puts document.to_html
' test.html

Принимает фрагмент HTML и упаковывает его в теги HTML и BODY для создания документа:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body>
<h2 name="1">
   test1
</h2>
<h2 name="2">
   test2
</h2>
<h2 name="3">
   test3
</h2>
</body></html>

Нежелательные строки можно удалить, отправив вывод в | sed '1,2d; $d'

...