xylphute
Dans ce cas, je reprends :
En admettant que le texte soit dans le fichier texte.txt, j’essaye de faire une modification avec la commande
sed -i 's/chaine à modifier/nouvelle chaine/g' texte.txt
La modification à chaque ligne consiste à récupérer un bout de la chaine initiale (dans mon exemple, la date) et le déplacer en début de chaîne. En réalité, je ne connais pas à l’avance la valeur des blocs de chiffres, donc je les détecte avec le motif suivant : [0-9]{4}[0-9]{2}_[0-9]{2}
L’idée est qu"à chaque fois que sed trouve une chaîne qui correspond au motif, il la stocke dans une variable pour la replacer au bon endroit (ici au début de la ligne) ainsi :
chaine à modifier = suite de caractères {sous-chaine correspondant au motif}
nouvelle chaine = {sous-chaîne correspondant au motif}-suite de caractères
Autrement dit en reprenant un des exemples ci-dessus : “toto_le_grand-2012_03_17” doit devenir “2012_03_17-toto_le_grand”.
Après, pour parcourir les lignes, ça, je sais faire grace à l’option -i. Mon problème concerne uniquement ce que je mets dans mon sed.
sed "s/je détecte ma sous-chaîne avec le motif/je réutilise ma sous-chaîne détectée précédemment pour la replacer comme dans l’exemple ci-dessus.
Voilà, j’espère avoir été plus clair.
fgland
Merci pour cette doc qui montre bien comment stocker la sous-chaîne correspondant à un motif, mais je n’ai pas compris comment on la récupère dans la chaîne de sortie. J’essaie de tout faire uniquement en bash.