sed или awk: заменить \ n из выбранных нескольких строк - PullRequest
0 голосов
/ 14 апреля 2019

У меня есть текстовый файл, как показано ниже

jhasdh jkhsd
lahs dkjh j

<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<tbody>
<tr class="odd">
<td><p><span class="c2">sample text</span></p>
<p><span class="c2">sample text3</span></p>
</td>
</tr>
</tbody>
</table>


lajslkdjl 

;kjksalkd j

;kasdl kj


<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<tbody>
<tr class="odd">
<td><p><span class="c2">sample text223</span></p>
<p><span class="c2">sample 2332text3</span></p>
</td>
</tr>
</tbody>
</table>

jashdkjh

jashdjkh


jskdhkj

Теперь я хочу, чтобы все <table> .mutiple lines her.. </table> было в одной строке. * 1005 то есть *

jhasdh jkhsd
lahs dkjh j

<table><colgroup><col style="width: 100%" /></colgroup><tbody><tr class="odd"><td><p><span class="c2">sample text</span></p><p><span class="c2">sample text3</span></p></td></tr></tbody></table>


lajslkdjl 

;kjksalkd j

;kasdl kj


<table><colgroup><col style="width: 100%" /></colgroup><tbody><tr class="odd"><td><p><span class="c2">sample text223</span></p><p><span class="c2">sample 2332text3</span></p></td></tr></tbody></table>

jashdkjh

jashdjkh


jskdhkj

Я могу сделать это в возвышенном тексте следующим образом

найти: (?s)(<table>(?:(?!<table>).)*?</table>)

тогда все <table> ... </table> выбраны

затем найдите \n и замените на "" (пусто) в selection

Но я хочу сделать это с помощью sed или awk

как я могу это сделать

Ответы [ 2 ]

0 голосов
/ 14 апреля 2019

если ваши данные в файле 'd' попробуйте gnu sed,

sed -E '/<table>/{:a N;/.*\n<\/table>/!ba;s/\n//g;} ' d
0 голосов
/ 14 апреля 2019
awk '/<table>/{ORS=""} /<\/table>/{ORS=RS} 1' file 

для каждой строки:

  • , если <table> найдено, установить O utput R ecord S разделитель в пустую строку (""),
  • , если </table> найден, восстановить ORS,
  • print.

посмотреть онлайн-демонстрацию.

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

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