Pour mémoire.
Comment extraire la n-ème ligne d'une fichier en bash?
Soit le fichier suivant :
Ligne 01
Ligne 02
Ligne 03
Ligne 04
Ligne 05
Ligne 06
Ligne 07
Avec l'outil sed :
# J'extrais la 4eme ligne du fichier
cat mon_fichier | sed "4q;d"
# Ce qui donne
Ligne 04
# J'extrais la 67eme ligne (avec une variable)
var="67"
cat mon_fichier | sed "${var}q;d"
La même chose mais avec l'outil sed cette fois.
Je veux donc afficher ce qui se trouve entre deux motifs, mais en utilisant des variables à la place des motifs. J'utilise le fichier suivant :
Ce fichier est un fichier particulier
car il contient un passage sensible situé
entre MOTIF_01 et
une balise
de fin
appelée MOTIF_02. Il s'agit d'extraire
ce qui se situe entre les deux.
Pour cela j'utilise sed de la façon suivante :
# Le cas classique avec MOTIF_01 et MOTIF_02
cat mon_fichier | sed -n "/MOTIF_01/,/MOTIF_02/p"
# Ce qui me donne
entre MOTIF_01 et
une balise
de fin
appelée MOTIF_02. Il s'agit d'extraire
En fait, cela me donne ce qui se trouve entre les lignes comprenant les motifs, en plus des lignes comprenant les motifs. Après ça, un substitution avec sed "s///" finit le travail.
# En utilisant des variables (il suffit de les ajouter aux motifs)
cat mon_fichier | sed -n "/MOTIF_01$VAR_01/,/$VAR_02/p"