1

我想编写一个 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 来获取关键字的行,但不知道如何获取以下行。

4

2 回答 2

3

怎么样

grep -A 3 YES

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

于 2013-05-23T06:36:42.653 回答
0

我在想一些事情:

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

这很hacky,但我不知道有任何更优雅的方式来做到这一点。本质上,这只是逐行读取文件并检查每一行的 grep 输出,而不是让 grep 自己遍历整个文件。

于 2013-05-23T06:35:27.057 回答