我有一个文本文件,我想打印以模式“abcd”开头的第一行,以及以“DDD”模式开头的第8行和第9行。这样做的任何sed或awk?
答案 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