Усечение комментариев после закрытия HTML-тега с использованием BASH - PullRequest
0 голосов
/ 17 января 2012

Я пытаюсь выяснить, как удалить содержимое после закрывающего тега HTML , используя только bash или обычные инструменты GNU . Например, учитывая следующий HTML-шаблон, каким будет эффективный способ удалить завершающий комментарий, не касаясь встроенного комментария и не используя внешний язык, такой как Python?

<!DOCTYPE html>
<html>
<head>
 <title>Site | Page 1</title>
</head>
<body>

 <!-- Don't delete me! -->

</body>
</html>

<!--
Man, I really wish to vanish!
-->

Единственное, что я могу придумать, - это прочитать весь файл в память и обработать его там, то есть что-то архаичное, например, получение местоположения закрывающего тега HTML с помощью регулярных выражений, усечение после этого и запись обратно на диск.

Ответы [ 4 ]

1 голос
/ 17 января 2012

sed:

sed -n '1,/<\/html>/p' some.html > truncated.html

Пример:

% sed -n '1,/<\/html>/p' some.html
<!DOCTYPE html>
<html>
<head>
 <title>Site | Page 1</title>
</head>
<body>

 <!-- Don't delete me! -->

</body>
</html>

Где:

  • -n - отключить автоматическую печать пространства шаблона
  • 1 - первая строка
  • строка, содержащая '</html>' - последняя строка
  • p печатает эти строки
1 голос
/ 17 января 2012

Это может работать для вас:

sed '/<\/html>/q' file
0 голосов
/ 17 января 2012

В awk:

awk 'NR==1,/<\/html>/' file 
0 голосов
/ 17 января 2012

Это должно сделать это.Делайте все, что вам нужно, с результирующей переменной.

myFile="whatever_your_filename_is.something"
ProcessedText=$( sed 's:\(.\+</html>\).*:\1:' $myFile )

Что это делает: направляет содержимое файла в sed, который затем ищет строку с максимальной длиной, заканчивающейся на ификсирует это.Остальная часть текста совпадает, но не фиксируется.Это (т. Е. Полный текст) затем заменяется захваченным текстом (т. Е. Всем, вплоть до тега).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...