How to print 5 consecutive lines after a pattern in file using awk
Another way to do it in AWK:
awk '/PATTERN/ {for(i=1; i<=5; i++) {getline; print}}' inputfile
in sed
:
sed -n '/PATTERN/{n;p;n;p;n;p;n;p;n;p}' inputfile
in GNU sed
:
sed -n '/PATTERN/,+7p' inputfile
or
sed -n '1{x;s/.*/####/;x};/PATTERN/{:a;n;p;x;s/.//;ta;q}' inputfile
The #
characters represent a counter. Use one fewer than the number of lines you want to output.
grep "PATTERN" search-file -A 5
will do the job for you if decide to give grep a chance.
Edit: You can call grep using system()
function from inside your awk
script as well.
awk '
{
if (lines > 0) {
print;
--lines;
}
}
/PATTERN/ {
lines = 5
}
' < input
This yields:
#Line1
#Line2
#Line3
#Line4
#Line5