首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >忽略下一个字段与上一个字段相同的行

忽略下一个字段与上一个字段相同的行
EN

Stack Overflow用户
提问于 2009-09-22 17:36:49
回答 3查看 154关注 0票数 1

我有一个文件,其内容如下

代码语言:javascript
复制
123,1,ABC,DEF
123,1,ABC
345,4,TZY
456,3,XYZ
333,4,TTT,YYY
333,4,TTT

我想忽略前一个和下一个内容相同的行,即包含123和333的行

输出需要是

代码语言:javascript
复制
345,4,TZY
456,3,XYZ

你有什么建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-22 19:20:08

TMTOWTDI:

代码语言:javascript
复制
my $str = join '', <>;
$str =~ s/^(\d+).+\n(\1.+\n)+//mg;
print $str;

编辑:第一行也可以替换为Randal L. Schwartz的slurp:

代码语言:javascript
复制
my $str = do { local $/; <HANDLE> }; # 
票数 2
EN

Stack Overflow用户

发布于 2009-09-22 21:00:45

TMTOWDI

代码语言:javascript
复制
my $last_prefix = ""; 
my $last_line = ""; 
while (<>) { check_line($_); }
check_line("");    sub check_line {
    my $line = shift;
    my ($prefix) = ($line =~ /^([^,]*),/); 
    if (($prefix || "") ne $last_prefix ) {
        print $last_line;
        $last_line = $_;
    } else {
        $last_line = "";
    };
    $last_prefix = $prefix; 

}

这很冗长,但我怀疑在一个非常大的文件上,它的性能可能比regexp更好。

票数 1
EN

Stack Overflow用户

发布于 2009-09-22 18:24:29

尝试使用uniq实用程序

uniq -w 3 your_file.txt

就能达到目的。不需要perl

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1461493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档