因此,使用 grep 我们可以使用 -A 来获取匹配“之后”的行,我们可以使用 -B 获取匹配“之前”的行。我们也可以使用 -C 来获取前后的行。
我有一些这样的数据
boring data
boring data
boring data
interesting value
MARK
boring data
boring data
boring data
interesting value
MARK
Run Code Online (Sandbox Code Playgroud)
我想得到这样的输出:
interesting value
interesting value
Run Code Online (Sandbox Code Playgroud)
使用选项 -BI 得到这个:
# cat somefile | grep -B 1 MARK
interesting value
MARK
interesting value
MARK
Run Code Online (Sandbox Code Playgroud)
我想完全排除 MARK 线。
Fre*_*ddy 10
您可以添加逆grep
用-v
后你的第一个grep
:
$ grep -B1 --no-group-separator 'MARK' somefile | grep -v 'MARK'
interesting value
interesting value
Run Code Online (Sandbox Code Playgroud)
我添加--no-group-separator
了省略匹配之间的分隔线。
如果您不依赖于使用grep
,那么您可以使用其他工具,例如 awk。
awk '/MARK/ { print saved_line }
{ saved_line=$0 }'
Run Code Online (Sandbox Code Playgroud)
这表示如果该行匹配,则打印保存的行,并在每一行上保存它以备再次需要。
归档时间: |
|
查看次数: |
883 次 |
最近记录: |