grep -A1 'blah' logfile
多亏了这个命令,每一行都有'blah',我得到了包含'blah'的行输出和日志文件中的下一行。这可能是一个简单的,但我找不到一种方法来省略一行有'blah',只显示下一行在输出。
grep -A1 'blah' logfile
多亏了这个命令,每一行都有'blah',我得到了包含'blah'的行输出和日志文件中的下一行。这可能是一个简单的,但我找不到一种方法来省略一行有'blah',只显示下一行在输出。
当前回答
滚边是你的朋友……
使用grep -A1显示匹配后的下一行,然后将结果管道到tail,只抓取一行,
cat logs/info.log | grep "term" -A1 | tail -n 1
其他回答
reaim的回答很好,对我很有用。将其扩展到打印模式之后的第7行是很简单的
awk -v lines=7 '/blah/ {for(i=lines;i;--i)getline; print $0 }' logfile
Perl一行程序警告
只是为了好玩……匹配后只打印一行
perl -lne '$. == $next && print; $next = ($.+1) if /match/' data.txt
更有趣的是……匹配后打印接下来的十行
perl -lne 'push @nexts, (($.+1)..($.+10)) if /match/; $. ~~ @nexts && print' data.txt
虽然有点作弊,因为实际上有两个命令
grep /Pattern/ | tail -n 2 | head -n
尾先2个,头最后一个,比赛结束后正好排在第一行。
滚边是你的朋友……
使用grep -A1显示匹配后的下一行,然后将结果管道到tail,只抓取一行,
cat logs/info.log | grep "term" -A1 | tail -n 1
如果下一行从来没有包含'blah',你可以过滤他们:
grep -A1 blah logfile | grep -v blah
使用cat logfile |…不需要。