J'ai un fichier qui ressemble au-dessous -awk pour retourner toutes les lignes correspondant à
A
B
C
D
E
-----
A
B
C
D
C
---
X
Y
A
B
XEC
---
Lorsque la cinquième ligne de chaque bloc est/contient E, je veux que les 4 lignes précédentes à retourner. J'ai écrit la commande ci-dessous, mais il est buggé
awk '{a[NR]=$0} $0~s {f=NR} END {print a[f-4]; print a[f-6]; print a[f-8];}' s="E" file.txt
Mais il ne retourne que la dernière correspondance. Je veux que toutes les lignes correspondantes soient renvoyées.
Pour les entrées ci-dessus, la sortie doit être
A
B
C
D
---
X
Y
A
B
est-il un autre moyen d'y parvenir?
Avez-vous vraiment ** '' --- ** lignes dans le fichier, comme indiqué en question? – anubhava
Oui, j'ai ces lignes :) – maddie