Подтвердить что ты не робот

Удалить теги html в sed или аналогичных

Я пытаюсь получить содержимое таблицы с wepage. Мне нужно содержимое, но не теги <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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

Оригинал:

Mac Terminal 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="#" onclick="location.href='http://www.google.com/'; return false;">here</A>.
</BODY></HTML>

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

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

301 Moved
301 Moved
The document has moved
here.

$