Salut,
Une solution sûrement parmi d'autres...
Le fichier référence (plop) :
truc machin bidule
pattern0
d
pattern1
e
pattern1
f
pattern1
g
pattern1
h
pattern1
i
pattern1
j
pattern1
k
pattern1
l
pattern1
m
pattern1
n
pattern1
o
chose foo bar |
Le script sed (script.sed) :
Code :
- #n
- :z
- N
- $ !b z
- s/.*\(pattern0.*\)/\1/
- s/pattern1/&\n/10
- s/\n\n.*//p
|
Le résultat de la commande "sed -f script.sed plop" :
pattern0
d
pattern1
e
pattern1
f
pattern1
g
pattern1
h
pattern1
i
pattern1
j
pattern1
k
pattern1
l
pattern1
m
pattern1 |
J'ai ciblé la 10ème occurrence (il y en a 11). Il n'y a qu'à changer le chiffre dans l'expression pour cibler l'occurrence de son choix
Explications en gros.
le script charge tout le fichier dans le buffer principal de "sed".
Puis on élimine tout ce qui se trouve avant le 1er motif de référence.
On place un "tag" (ici j'ai choisi de rajouter une fin de ligne (\n) ce qui nous en fait 2 consécutives) après la 10ème occurrence du 2nd motif.
Et pour finir on supprime le "tag" et tout ce qui se trouve après lui.
---------------
$ man woman