删除多于一行的2个模式之间的字符串

时间:2019-05-15 13:06:56

标签: regex bash sed

我想摆脱模式“ <>”之间的所有内容,包括使用bash模式。

我已经尝试了这些sed命令,但是没有给出我想要的结果。

sed 's/<.*>//g'

sed -r 's/<[^ ][^ ]*>//g'

例如

发件人:

<span class="tlf_cdefinition">Qui ordonne, dispose, met en ordre.</span> <span class="tlf_cexemple"><i>Le geste humain (...) renonce à prendre; il met la chose en place et la considère; tout est spectacle pour l'homme, et même son action. Non point doux par cela seul; redoutable au contraire par cette activité ordinnatrice </i>[<i>sic</i>] (<span class="tlf_cauteur"><span class="tlf_smallcaps">Alain</span></span><span class="tlf_ctitre">, <i>Propos</i></span><span class="tlf_cdate">, 1921</span>, p.271).</span><div class="tlf_parothers"><b>Rem.</b> On emploie de préférence auj., dans ce sens, <i>ordonnateur, -trice</i>.</div></div><div class="tlf_parah"><span class="tlf_cplan"><b>II. −</b></span> <span class="tlf_cemploi"><i>Subst. masc.</i></span> <div class="tlf_parah"><span class="tlf_cplan"><b>A. −</b></span> <span class="tlf_cdomaine"><i>LITURG.</i>,</span> <span class="tlf_cemploi"><i>vx.</i></span> <span class="tlf_cdefinition">Celui qui confère le sacrement d'un ordre ecclésiastique. (<span class="tlf_csource">Dict. <span class="tlf_smallcaps">xix</span><sup>e</sup>et <span class="tlf_smallcaps">xx</span><sup>e</sup>s.</span>).</span> </div><div class="tlf_parah"><span class="tlf_cplan"><b>B. −</b></span> <span class="tlf_cdomaine"><i>INFORMAT.</i></span> <span class="tlf_cdefinition">Machine algorithmique composée d'un assemblage de matériels correspondant à des fonctions spécifiques, capable de recevoir de l'information, dotée de mémoires à grande capacité et de moyens de traitement à grande vitesse, pouvant restituer tout ou partie des éléments traités, ayant la possibilité de résoudre des problèmes mathématiques et logiques complexes, et nécessitant pour son fonctionnement la mise en oeuvre et l'exploitation automatique d'un ensemble de programmes enregistrés.</span> <span class="tlf_csyntagme"><i>Éléments périphériques d'un ordinateur; adresse, console, pupitre d'un ordinateur; imprimante, mémoire d'un ordinateur;</i></span> <span class="tlf_csyntagme">

我只想保留那个:

  

奎尔·奥多纳(Qui ordonne),处分,遇见恩·奥德里(Le geste humain(...)Renonceà   prendre;我遇见了自己选择的地方和观念;吹捧眼镜   倒l'homme等动作。非点式   可重用的反对派活动原件[](Alain,   Propos,1921年,第271页)。在丹斯·塞森斯(Empersie depréférenceauj。)   ordonnateur,-trice.II。 −圣礼圣堂   ecclésiastique。 (字典xixeet xxes。) −INFORMAT。机器   Matériels组合数字算法通讯员à   信息技术能力,信息能力,点   纪念大人物和大人物   维塞,复兴党人,艾扬   数学和逻辑问题研究的可能性   配合物和其他必要的附加功能   联合国开发计划署   éérééréspériphériquesd'un ordur;地址,控制台,   pupitre d'un ordinateur;欧洲刑警组织;

1 个答案:

答案 0 :(得分:0)

正如@Tom的评论所暗示的那样,使用regex解析HTML通常是邪恶的。话虽这么说,如果您仅具有单级(非嵌套)HTML标记,那么regex 可能可以在这里工作。但是,Sed的正则表达式引擎不是很强大,因为它不支持惰性点。这是在Bash中使用Perl做到这一点的方法:

Elasticsearch

这将输出:

echo "<span class=\"tlf_cdefinition\">Qui ordonne, dispose, met en ordre.</span> <h1>Hello World!</h1>"
    | perl -pe 's|<[^>]+>(.*?)</[^>]+>|\1|g'