关于linux:历史| grep :如何在已创建的命令周围可视化更多行?

history | grep : how to visualize more lines around the founded commands?

本问题已经有最佳答案,请猛点这里访问。

我使用命令history | grep 查找具有该特定key_word的历史记录中的所有命令。 这很好但有时还不够:我希望之前看到N个命令,并且在每个结果之后看M命令。

例如,对于history | grep build,我希望在每个结果之后看到之前的N = 10个命令和M = 5个命令。 针对以下理想输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 1209  git status
 1210  git add .
 1211  git commit -m 'bla bla bla'
 1212  git push http://xxx.xxx.xx.x:xxxxx/
 1213  git tag
 1214  source tools/settings.sh
 1215  cd demos/xxxxxxx/
 1216  xxxxxxx
 1217  cd demos/wait_zcu102/
 1218  ls
 1219  cd build.sw/      <------------------------------------- <key_word> is here
 1220  ls
 1221  atom .
 1222  source tools/settings.sh
 1223  cd demos/xxxxxxxxx/
 1224  xxxxx

有没有办法做到这一点?


您对所要求的内容有原生支持:

  • grep -B 1 在每场比赛前显示一行[B]
  • 每次匹配时,grep -A 1 显示一行[A]

这两个选项可以同时使用,显然你可以指定任何数字> = 0。

要完成您的示例:history | grep -B 10 -A 5 build

有关更多信息,请查看grep man中的Context Line Control部分。


grep的文档:

1
2
3
4
5
6
7
8
 -A num, --after-context=num
         Print num lines of trailing context after each match.

 -B num, --before-context=num
         Print num lines of leading context before each match.

 -C[num, --context=num]
         Print num lines of leading and trailing context surrounding each match. The default is 2 and is equivalent to -A 2 -B 2.

在上面的示例中,您可以使用:

1
history | grep -A5 -B10 build