J’ai une question similaire à ceci: regex grep Unix contenant ‘x’ mais ne contenant pas ‘y’
La torsion est que, je voudrais grep les fichiers autour de ma recherche avec -C5.
Donc le grep this myfile | grep -v that
grep this myfile | grep -v that
ne fonctionnera pas.
exemple: laissez dire que myfile
est comme suit:
** ** alpha ** ** ## ## alpha beta ## ##
Je voudrais grep:
** ** alpha ** **
Comment pourrais-je y arriver?
Vous pouvez utiliser ce gnu grep
avec une regex PCRE:
grep -C2 -P '^(?!.*beta).*alpha' file
** ** alpha ** **
Regex '^(?!.*beta).*alpha'
utilise un lookahead négatif pour correspondre à une ligne contenant de l’ alpha
n’importe où mais ne contient pas de beta
.
Si gnu grep
n’est pas disponible:
awk '/alpha/ && !/beta/{print line[NR-2]; print line[NR-1]; n=NR} n && NR<=n+2; {line[NR]=$0}' file
** ** alpha ** **