Coucou tout le monde

J'ai un petit souci avec la commande gnu "sed"...

Mon problème est comment faire en sorte, dans le cas d'un chainage de commandes ( ...;...;...; ), que chaque commande ou groupe de commandes travaille uniquement sur le dernier filtrage, en somme l'output tel qu'il serait affiché (ou le pattern space courant ?), et non sur le fichier d'entrée ou le premier filtrage... Mes essais avec les "buffers" de sed se sont avérés infructueux...

Je donne un petit exemple concret :

soit un fichier "txt.txt" dont voici le contenu :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 l1
 x1
 l2
 x2
 l3
 xt
 l4
 xp
 l5
 xs
 l6
 x+
 l7
 x7
 l8
 x8
 l9
 x9
que je dois transformer en :

Citation Envoyé par output
xt xp
xs x+
ma ligne de commande sed qui fonctionne, mais dont je ne dois pas avoir plus d'une instance à la fois est :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
sed -n "/l3/,/l7/I!d;/x./!d;p" txt.txt |sed -n "N;s/\n//;p"
je souhaite qu'elle ait une forme proche de cette ligne qui évidemment ne produit pas le résultat escompté même quand j'y ai ajouté une étiquette et des accolades, et faute d'une maitrise totale sur la question :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
sed -n "/l3/,/l7/I!d;/x./!d;N;s/\n//;p" txt.txt
Merci