Удалите HTML-теги в sed или аналогичных - PullRequest
10 голосов
/ 29 сентября 2011

Я пытаюсь получить содержимое таблицы со страницы.Мне нужно только содержимое, а не теги <tr></tr>.Мне даже не нужно "tr" или "td" только содержание.например:

<td> I want only this </td>
<tr> and also this </tr>
<TABLE> only texts/numbers in between tags and not the tags. </TABLE>

также я хотел бы поместить первый вывод столбца, как это, в новый файл csv column1, info1, info2, info3 coumn2, info1, info2, info3

Iпопытался использовать sed для удаленных шаблонов <tr> <td>, но когда я выбираю таблицу, есть и другие теги, такие как <color> <span> и т. д., поэтому я хочу удалить все теги;короче говоря все с <и>.

Ответы [ 2 ]

18 голосов
/ 29 сентября 2011

sed 's/<[^>]\+>//g' удалит все теги, но вы можете заменить их пробелом, чтобы расположенные рядом теги не работали вместе: <td>one</td><td>two</td>, становясь: onetwo. Таким образом, вы можете сделать sed 's/<[^>]\+>/ /g', чтобы вывести one two (ну, на самом деле one two).

Это говорит о том, что если вам не нужен только необработанный текст, и кажется, что вы пытаетесь выполнить некоторые преобразования в данных после удаления тегов, язык сценариев, такой как Perl, мог бы быть более подходящим инструментом для выполнения этих вещей.

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

2 голосов
/ 05 февраля 2016

Оригинал:

Терминал Mac REGEX ведет себя немного по-другому.Я смог сделать это на своем Mac, используя следующий пример:

$ curl google.com | sed 's/<[^>]*>//g'
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   219  100   219    0     0    385      0 --:--:-- --:--:-- --:--:--   385

301 Moved
301 Moved
The document has moved
here.

$ bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin14)
Copyright (C) 2007 Free Software Foundation, Inc.

Редактировать:

Только для пояснения, оригинал выглядел так:

$ curl googl.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>

Такжеот раздражающего заголовка curl можно избавиться с помощью опции -s:

$ curl -s google.com | sed 's/<[^>]*>//g' 

301 Moved
301 Moved
The document has moved
here.

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