文本处理...打印第一次出现的pattern1以及出现第8次和第9次出现的模式2

时间:2013-10-26 17:50:23

标签: bash text-processing

我有一个文本文件,我想打印以模式“abcd”开头的第一行,以及以“DDD”模式开头的第8行和第9行。这样做的任何sed或awk?

2 个答案:

答案 0 :(得分:2)

这应该适合你:

awk '/^abcd/{p++;if(p==1) print}/^DDD/{q++;if(q==8||q==9)print}' file

答案 1 :(得分:1)

perl -lne 'push @{ $h->{$1} }, $_ if /.*(abcd|DDD).*/;END{print join "\n", @{ $h->{abcd}}[0]; print join "\n", @{ $h->{DDD}}[7..8];}' file

或分解:

perl -lne '
    push @{ $h->{$1} }, $_ if /.*(abcd|DDD).*/;
    END{
        print join "\n", @{ $h->{abcd} }[0], @{ $h->{DDD} }[7..8];
    }
' file
相关问题