著者: guilde.nt 日付: To: guilde CC: guilde 題目: Re: Remplacements de caractères indexés
>Dans un fichier, il voudrait, pour chaque ligne (= un enregistrement), >remplacer les caractères aux position 19, 20, 21 et 22 par 4 autres
>caractères. Il ne dispose que de shell, sed, awk, et perl (pas de python,
>ce serait trop simple !).
>
>Je ne me souviens plus assez de perl pour faire ça, mais je suis certain
>que c'est faisable. Si quelqu'un pouvait rafraichir ma mémoire...
>
>Sinon, est-ce également possible avec sed ou awk ? Je n'ai rien trouvé dans
>les docs qui permette de *remplacer* (sed ne prend que des expressions
>régulières, et on n'a juste trouvé comment 'extraire' la chaîne, avec
>substr, mais pas comment la remplacer).
echo 123456789012345678901234567890 | sed 's/\(.\{18\}\).\{4\}\(.*\)/\1abcd\2/'
'sed' utilise les BRE (basic regular expressions), 'awk' les ERE (extended
regular expressions) ; cela explique la foison de '\'.
Mais, pour modifier dans un fichier, il faut utiliser 'ed' (ou 'sed -i'
à la rigueur).
-Nicolas