在sed中替换/删除匹配字符串中的特殊字符

Too*_*onZ 5 regex sed

我有一个包含类似行的文件

I want a lot <*tag 1> more <*tag 2>*cheese *cakes.
Run Code Online (Sandbox Code Playgroud)

我试图删除*内部<>而不是外部.标签可能比上面更复杂.例如,<*better *tag 1>.

我试过/\bregex\b/s/\*//g,它适用于标签1,但不适用于标签2.那么我怎样才能使它适用于标签2呢?

非常感谢.

bam*_*ams 3

强制性 Perl 解决方案:

perl -pe '$_ = join "",
        map +($i++ % 2 == 0 ? $_ : s/\*//gr),
        split /(<[^>]+>)/, $_;' FILE
Run Code Online (Sandbox Code Playgroud)

附加:

perl -pe 's/(<[^>]+>)/$1 =~ s(\*)()gr/ge' FILE
Run Code Online (Sandbox Code Playgroud)