Как табулировать вторую строку из вывода grep -A - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь отфильтровать HTML-файл, чтобы получить только определенные значения из файла. Этот файл представляет собой отчет html от metatrader, и я хотел бы отфильтровать только таблицу выходных значений из html.

Это образец HTML-файла (report2.html)

<tr align="right">
   <td nowrap colspan="3">Net profit:</td>
   <td nowrap><b>17.74</b></td>
   <td nowrap colspan="3">Balance Drawdown Absolute:</td>
   <td nowrap><b>0.97</b></td>
   <td nowrap colspan="3">Absolute equity drawdown:</td>
   <td nowrap colspan="2"><b>1.39</b></td>
</tr>
<tr align="right">
   <td nowrap colspan="3">Gross Profit:</td>
   <td nowrap><b>43.91</b></td>
   <td nowrap colspan="3">Balance Drawdown Maximal:</td>
   <td nowrap><b>6.72 (0.07%)</b></td>
   <td nowrap colspan="3">Equity Drawdown Maximal:</td>
   <td nowrap colspan="2"><b>8.02 (0.08%)</b></td>
</tr>
<tr align="right">
   <td nowrap colspan="3">Gross Loss:</td>
   <td nowrap><b>-26.17</b></td>
   <td nowrap colspan="3">Relative balance drawdown:</td>
   <td nowrap><b>0.07% (6.72)</b></td>
   <td nowrap colspan="3">Relative equity drawdown:</td>
   <td nowrap colspan="2"><b>0.08% (8.02)</b></td>
</tr>

Если я использую

grep --no-group-separator -A1 awdown report2.html | sed -n '/^$/!{s/<[^>]*>//g;p;}'

Я понял следующее.

Balance Drawdown Absolute:
0.97
Absolute equity drawdown:
1.39
Balance Drawdown Maximal:
6.72 (0.07%)
Equity Drawdown Maximal:
8.02 (0.08%)
Relative balance drawdown:
0.07% (6.72)
Relative equity drawdown:
0.08% (8.02)

Проблема в том, что мне нужно иметь вторую строку сразу после первой с вкладкой, и я не знаю, как это сделать, а также мне нужно иметь имя файла на первой вкладке.

Ожидаемый результат выглядит примерно так:

report2.html    Balance Drawdown Absolute:  0.97
report2.html    Absolute equity drawdown:   1.39
report2.html    Balance Drawdown Maximal:   6.72 (0.07%)
report2.html    Equity Drawdown Maximal:    8.02 (0.08%)
report2.html    Relative balance drawdown:  0.07% (6.72)
report2.html    Relative equity drawdown:   0.08% (8.02)

Кто-нибудь может мне помочь, как добиться этого результата?

Спасибо

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

Другая альтернатива.

 grep --no-group-separator -A1 awdown report2.html | sed -n '/^$/!{s/<[^>]*>//g;p;}' | awk 'NR%2{printf "%s ",$0;next;}1'
0 голосов
/ 25 июня 2019

Попробуйте следующее:

grep --no-group-separator -A1 awdown report2.html | sed -n '/^$/!{s/<[^>]*>//g;p;}' | sed '$!N;s/\n//'

Я просто добавил другую команду редактирования потока после вашей

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