1

我从文件中逐行提取并拆分成单词。我想要除“<”和“>”之间的单词之外的所有单词。

        if($word =~ m/^(\<).*(\>)$/)
            {
                 print "Remove this word";
            }

我尝试了上面的代码。但它不起作用。

这是我正在处理的文件:

#> main bcel_coverage.A    
#> <init> bcel_coverage.C
<# <init>
   ?? main
abc
<# main

我不想<init>在上面的文件中打印。其他任何内容也可以包含在“<”和“>”中。

4

2 回答 2

2
perl -ne '$_=~s/<[^>^<]*>//g; print' your_file

测试如下:

> cat temp
#> main bcel_coverage.A    
#> <init> bcel_coverage.C
<# <init>
   ?? main
abc
<# main
> perl -ne '$_=~s/<[^>^<]*>//g; print' temp
#> main bcel_coverage.A    
#>  bcel_coverage.C
<# 
   ?? main
abc
<# main
>
于 2012-10-03T10:54:53.713 回答
1

使用匹配包含在 . 中的单词的正则表达式拆分行<...>

% perl -e 'use Data::Dumper; $line = "ss<a>s<da>fg"; @words = split(/<[^>]+>/, $line); print Data::Dumper::Dumper( @words );'

$VAR1 = 'ss';
$VAR2 = 's';
$VAR3 = 'fg';

正则表达式:

< :    Match starting <
[^>] : Anything that is not >
> :    Closing >
于 2012-10-03T10:18:02.853 回答