grep -A1 'blah' logfile

多亏了这个命令,每一行都有'blah',我得到了包含'blah'的行输出和日志文件中的下一行。这可能是一个简单的,但我找不到一种方法来省略一行有'blah',只显示下一行在输出。


当前回答

grep /Pattern/ | tail -n 2 | head -n

尾先2个,头最后一个,比赛结束后正好排在第一行。

其他回答

我不知道有什么方法可以用grep来做到这一点,但是使用awk可以达到相同的结果:

awk '/blah/ {getline;print}' < logfile

如果你想坚持使用grep:

grep -A1 'blah' logfile | grep -v "blah"

或者使用sed:

sed -n '/blah/{n;p;}' logfile

您可以尝试使用awk:

awk '/blah/{getline; print}' logfile

如果下一行从来没有包含'blah',你可以过滤他们:

grep -A1 blah logfile | grep -v blah

使用cat logfile |…不需要。

reaim的回答很好,对我很有用。将其扩展到打印模式之后的第7行是很简单的

awk -v lines=7 '/blah/ {for(i=lines;i;--i)getline; print $0 }' logfile