Html 如何在bash中的两个模式之间删除
如何删除文件行中两个模式之间的文本,我在这里列出了行,为了简单起见,我只显示了两行Html 如何在bash中的两个模式之间删除,html,regex,bash,Html,Regex,Bash,如何删除文件行中两个模式之间的文本,我在这里列出了行,为了简单起见,我只显示了两行 <sup id="Gen.2.23" class="v0_2_23">23</sup>Anke Adam pulo:</span></p><p class="q2"><span class="v0_2_23">“La ke non nerrepi-heihei pen arrepi-lo lapen ne-ok pen a-ok-lo;&l
<sup id="Gen.2.23" class="v0_2_23">23</sup>Anke Adam pulo:</span></p><p class="q2"><span class="v0_2_23">“La ke non nerrepi-heihei pen arrepi-lo lapen ne-ok pen a-ok-lo;</span></p><p class="q2"><span class="v0_2_23">bangpi aphan ‘Arloso’ pusi hangpo,</span></p><p class="q2"><span class="v0_2_23">pima bangpi ke Pinso pensi enlo.”</span></p>
<sup id="Gen.2.24" class="v0_2_24">24</sup>Anke Adam pulo:</span></p><p class="q2"><span class="v0_2_24">“La ke non nerrepi-heihei pen arrepi-lo lapen ne-ok pen a-ok-lo;</span></p><p class="q2"><span class="v0_2_24">bangpi aphan ‘Arloso’ pusi hangpo,</span></p><p class="q2"><span class="v0_2_24">pima bangpi ke Pinso pensi enlo.”</span></p>
当我使用sed的//p class=“q2”>*.*.>//g'时,它删除了第一个
看起来像是在寻找一个非贪婪的匹配,否则*>“
将在该行上尽可能匹配。非贪婪匹配的语法通常是*?
,尽管我认为sed不支持它。所以,对于你的情况,你可以这样做
perl -pe 's;</span></p><p class="q2">.*?">;;g' input.html
perl-pe .*?>;g'input.html
但是,正如@melpomene所建议的,regexp并不是HTML解析的好选择。看起来这会产生您想要的结果:
sed 's/<\/span><\/p><p class="q2"><span class="v0_2_23">//g' file
sed的//p class=“q2”>//g'文件
为了避免转义,可以使用不同的分隔符,如:
sed 's|</span></p><p class="q2"><span class="v0_2_23">||g' file
sed的|| | g”文件
为什么不使用HTML解析器?@jeremysprofile-不是一个无意义问题的重复。
sed 's|</span></p><p class="q2"><span class="v0_2_23">||g' file