删除匹配括号

时间:2014-06-10 08:46:56

标签: parsing nested

我想解析像

这样的文字
Lorem ipsum dolor \tag{sit} amet, \git{consetetur} sadipscing elitr, sed diam
nonumy eirmod tempor invidunt ut \tag{labore \git{et} dolore magna aliquyam
erat, sed} diam voluptua. At vero eos et accusam et justo duo dolores et ea
\tag{rebum.}

Lorem ipsum dolor sit amet, \git{consetetur} sadipscing elitr, sed diam
nonumy eirmod tempor invidunt ut labore \git{et} dolore magna aliquyam
erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
rebum.

即删除所有\tag{...}个环境。它们可以嵌套,并且可以跨越多行

在学习here时,正则表达式工具不适合该任务。

是否有适合此类问题的语言或Unix工具?

1 个答案:

答案 0 :(得分:2)

您可以使用perl完成此任务:

perl -0ne 's/\\tag{//g;$i=0;while(/./gs){$i-- if $& eq "{";$i++ if $& eq "}"; if ($i<1){print $&}else{$i=0}}'

所有学分应为bartus11