我对此有类似的问题:Unix grep regex containing 'x' but not containing 'y'
与众不同的是,我想用-C5在搜索过程中复制文件。
因此grep this myfile | grep -v that
无法正常工作。
示例:假设myfile
如下:
**
**
alpha
**
**
##
##
alpha beta
##
##
我想grep:
**
**
alpha
**
**
我将如何实现?
答案 0 :(得分:2)
您可以将此gnu grep
与PCRE正则表达式一起使用:
grep -C2 -P '^(?!.*beta).*alpha' file
**
**
alpha
**
**
正则表达式'^(?!.*beta).*alpha'
使用否定前瞻来匹配包含alpha
但不包含beta
的行。
如果gnu grep
不可用:
awk '/alpha/ && !/beta/{print line[NR-2]; print line[NR-1]; n=NR}
n && NR<=n+2; {line[NR]=$0}' file
**
**
alpha
**
**