grep - impression en ligne, avant, n'imprimez pas de match

Comment faire pour imprimer facilement la ligne au-dessus de la correspondance et passez le match lui-même? grep -A, -B et -o opter de ne pas le résoudre. Peut-être que certains awk magie?

par exemple:

$ cat foo.txt
bar
foo
baz
foo

$ cat foo.txt | grep foo-SOMETHING
bar
baz

Modifier

  • dans le cas où la ligne 2 et 3 a "foo", puis la ligne 1 et 2 doivent être imprimés (bien que je ne suis pas très strictes ici)

Fonction supplémentaire: prenons l'exemple:

bar
foo
baz
foo
foo

Cela devrait idéalement retour

bar
baz
foo
  • Quel est le problème avec -B?
  • il imprime la ligne précédente ET la mise en correspondance de la ligne.
  • qu'en est deux lignes continues match foo ? impression de la première ligne? ou d'ignorer les deux?
  • Je suis conscient de cela, mais qui peut être travaillé autour de contre.
InformationsquelleAutor Jakub M. | 2013-07-30