我有一个如下的文本文件
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>
排成一行。即
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
我该怎么办
答案 0 :(得分:0)
awk '/<table>/{ORS=""} /<\/table>/{ORS=RS} 1' file
每行:
<table>
,请将 O utput R ecord S 分隔符设置为空字符串(""
) ,</table>
,请还原ORS,请参阅此online demo。
请注意,这可能适用于您的示例,但显然不适用于所有table
元素。参见why parsing HTML using regex is a bad practice。
答案 1 :(得分:0)
如果您的“ d”文件中的数据尝试gnu sed,
sed -E '/<table>/{:a N;/.*\n<\/table>/!ba;s/\n//g;} ' d