Удалить теги 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>
и т.д., поэтому я хочу удалить все теги; вкратце все, и > .
Ответы
Ответ 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.
$