1

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

4

2 回答 2

2

这应该适合你:

awk '/^abcd/{p++;if(p==1) print}/^DDD/{q++;if(q==8||q==9)print}' file
于 2013-10-26T17:59:01.543 回答
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
于 2013-10-26T18:19:32.690 回答