grep -A1 'blah' logfile

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


当前回答

看来你用错工具了。Grep并没有那么复杂,我认为你想要提升awk作为这项工作的工具:

Awk '/blah/ {getline;打印$0}的日志文件

如果你有任何问题让我知道,我认为它很值得学习一点awk,它是一个伟大的工具:)

附注:这个例子并没有获得“无用使用猫奖”;) http://porkmail.org/era/unix/award.html

其他回答

Perl一行程序警告

只是为了好玩……匹配后只打印一行

perl -lne '$. == $next && print; $next = ($.+1) if /match/' data.txt

更有趣的是……匹配后打印接下来的十行

perl -lne 'push @nexts, (($.+1)..($.+10)) if /match/; $. ~~ @nexts && print' data.txt

虽然有点作弊,因为实际上有两个命令

您可以尝试使用awk:

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

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

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

如果你想坚持使用grep:

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

或者使用sed:

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

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

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