sed命令在文件中搜索多个字符串

时间:2018-09-21 09:27:02

标签: shell sed

我需要在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: 1pxtd colspan="2" class="suite

然后,一旦搜索到它,我就需要排除该字符串的搜索关键字,并打印其余部分。

平均输出如下:

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

请帮助

1 个答案:

答案 0 :(得分:1)

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