【发布时间】:2016-11-09 16:16:21
【问题描述】:
使用grep,您可以打印与您的搜索查询匹配的行。添加-C 选项将打印两行周围的上下文,如下所示:
> grep -C 2 'lorem'
some context
some other context
**lorem ipsum**
another line
yet another line
同样,您可以使用grep -B 2 或grep -A 2 分别打印具有前两行或后两行的匹配行,例如:
> grep -A 2 'lorem'
**lorem ipsum**
another line
yet another line
是否可以跳过匹配行而只打印上下文?具体来说,我只想打印恰好在匹配上方 2 行的行,如下所示:
> <some magic command>
some context
【问题讨论】:
-
不在我所知道的
grep中。像这样使用awk:printing with sed or awk a line following a matching pattern -
@fedorqui 这适用于以下几行,但我可以修改它以获得前面的几行吗?以前从未使用过 awk。
-
使用
tac向后打印文件。 -
然后可以使用
-v排除匹配线吗? -
如果你可以允许
grep的两个实例被使用,你可以试试grep -v "lorem" < <(grep -A2 "lorem" file)