Команда sed для поиска нескольких строк в файле - PullRequest
0 голосов
/ 21 сентября 2018

Мне нужно найти несколько строк в html-файле, а затем исключить найденную часть этой строки и сохранить оставшуюся часть в файл.

Мой файл похож на

<td colspan="2" class="suite-unknown">
<td colspan="2" class="suite-fail">
<span style="margin: 2px; padding: 1px">&nbsp;</span>TCS-209
<span style="margin: 2px; padding: 1px">&nbsp;</span>[TC-001] User validates login
<td colspan="2" class="suite-unknown">
<td colspan="2" class="suite-pass">
<span style="margin: 2px; padding: 1px">&nbsp;</span>TCS-210
<span style="margin: 2px; padding: 1px">&nbsp;</span>[TC-002] user close browser

Я пробовал много вариантов: Неудачные варианты:

sed -n ('/<span style="margin: 2px; padding: 1px/p'|'/td colspan="2" class="suite-/p') report.html

Еще один:

sed -n '/\/<span style="margin: 2px; padding: 1px\|*td colspan="2" class="suite/p' report.html 

Мои ключевые слова для поиска: <span style="margin: 2px; padding: 1px и td colspan="2" class="suite.

А затем, после его поиска, мне нужно исключить ключевые слова для поиска в строке и напечатать остальные.

Значения вывода будут такими:

-unknown
-fail
TCS-209
[TC-001] User validates login
unknown
pass
TCS-210
[TC-002] user close browser

Пожалуйста, помогите

1 Ответ

0 голосов
/ 21 сентября 2018
sed -n 's/^ *<td colspan="2" class="suite\(.*\)">/\1/p;s/^ *<span style="margin: 2px; padding: 1px.*<\/span>//p' myfile

Это не лучший способ извлечения информации из HTML, но он подойдет для чего-то такого простого.

curl -s 'https://raw.githubusercontent.com/aruiz-caritsqa/wdio-html-format-reporter/master/wdio-report.html' | sed  -n 's/^ *<td colspan="2" class="suite\(.*\)">/\1/p;s/^ *<span style="margin: 2px; padding: 1px.*<\/span>//p'

дает мне

-unknown
some example tests for a readme.md demo
-pass
should be a passing test
-fail
should have a failing test
-pass
Full page screenshot
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...