Bonjour à tous,
j'ai utilisé la commande sed pour récupérer à partir d'un fichier, les champs entre les balises <DOCNO> et </DOCNO> si le motif1 existe:
Résultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part sed -n '/<DOCNO>/{:z;N;/<\/DOCNO>/!b z;/motif1/p}' fichier.txt
Je dois faire ce même traitement pour plusieurs motifs, donc j'ai mis tous les motifs dans un fichier motifs.txt et en utilisant une boucle, j'ai essayé:<DOCNO>
.....
motif1
.....
</DoCNO>
Code : Sélectionner tout - Visualiser dans une fenêtre à part for i in $(cat motifs.txt); do sed -n '/<DOCNO>/{:z;N;/<\/DOCNO>/!b z;/"$i"/p}' fichier.txt ;doneLe résultat est vide, je ne sais pas comment faire la boucle correctement. Pourriez vous m'aidez svp. Merci à l'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part cat motifs.txt |while read ligne; do sed -n '/<DOCNO>/{:z;N;/<\/DOCNO>/!b z;/"$ligne"/p}' fichier.txt; done
Partager