grep -C 命令:显示匹配行前后N行

前言

grep是一个在命令行查看日志会经常用到的命令。大多数时候可能会这样使用:

  1. cat app.log | grep xxx
  2. // 或
  3. grep xxx app.log

用于快速在日志中找到xxx关键字行,单往往我们不止需要看这一行的数据,还需要看这一行前后的关联日志,这时 -C 开关就有用了。

用法

grep手册中的解释:

  1. Context Line Control
  2. -A NUM, --after-context=NUM
  3. Print NUM lines of trailing context after matching lines.
  4. Places a line containing a group separator (--) between
  5. contiguous groups of matches. With the -o or --only-matching
  6. option, this has no effect and a warning is given.
  7. -B NUM, --before-context=NUM
  8. Print NUM lines of leading context before matching lines.
  9. Places a line containing a group separator (--) between
  10. contiguous groups of matches. With the -o or --only-matching
  11. option, this has no effect and a warning is given.
  12. -C NUM, -NUM, --context=NUM
  13. Print NUM lines of output context. Places a line containing a
  14. group separator (--) between contiguous groups of matches. With
  15. the -o or --only-matching option, this has no effect and a
  16. warning is given.

简单翻译就是,-A -B -C 后面都跟阿拉伯数字,-A是显示匹配后和它后面的n行。-B是显示匹配行和它前面的n行。-C是匹配行和它前后各n行。总体来说,-C覆盖面最大。用它保险些。哈哈。这3个开关都是关于匹配行的上下文的(context)。
于是,

  1. grep -C 10 xxx app.log

就是搜索app.log日志文件,找到匹配xxx字串的行,显示该行紧跟的前后10行。

-n :输出行号。

这种方法比用程序打开该文件搜索关键字要快得多!