Shell:在文件中查找关键字并获取以下行的内容

时间:2013-05-23 06:27:24

标签: bash shell

我想写一个shell脚本,它可以找到一个特定的单词并获取以下行的内容。

例如我有一个文件:

...[not interested info]...
Keyword: YES
wanted line 1
wanted line 2
wanted line 3
...[not interested info]...

我想搜索关键字'YES'并得到以下3行(假设后面的行数是固定的,在这种情况下是3):

wanted line 1
wanted line 2
wanted line 3

我知道如何使用grep来获取关键字的行,但不知道如何获取以下行。

2 个答案:

答案 0 :(得分:2)

怎么样

grep -A 3 YES

-A 3之后打印3行尾随上下文(YES)。

答案 1 :(得分:0)

我正在思考以下几点:

while read line
do
  if [ "" != `grep YES $line` ]; then
    echo read line
    echo read line
    echo read line
  fi
done

这很糟糕,但我不知道有任何更优雅的方式。本质上,这只是逐行读取文件并检查每行上的grep输出,而不是让grep单独遍历整个文件。