Re: [script] modifier le dernier caractere de chaque ligne d'un fichier
Daniel Caillibaud a écrit, mercredi 30 mai 2007, à 11:13 :
> Alexandre Mackow wrote:
>
> >Bonjour à tous,
bonjour,
> >je suis amené, dans le cadre de mon taf, a essayer de metter en place
> >une solution de scripting.
> >J'ai un repertoire donné, dans ce repertoire via une tache cron, je
> >dois effectuer une modif sur le fichier...
> >En reel ca donne, si le nom du fichier contient un P alors remplacer le
> >dernier caractère par un 4....
>
> Le dernier caractère du fichier ou de son nom ?
>
> >Comment faire pour remplacer le dernier caractere de chaque ligne....
> >Certainement via sed
>
> oui, par exemple
>
> >mais je ne trouve pas l'option dernier caractere...
>
> dernier de la ligne, c'est '$' dans une regexp (les autres ont répondu), le
> dernier du fichier, c'est aussi $ mais comme sélecteur
> Par exemple
> sed -i -e '$ s/\(.*\)$/\14/' fichier
>
> va ajouter le caractère 4 à la fin de la dernière ligne de fichier.
>
> le -i précise de faire ça sur le fichier directement, sans backup.
> Pour un backup du fichier original (avec ajout de .bak)
> sed -i .bak -e '$ s/\(.*\)$/\14/' fichier
On peut simplifier :
sed -i.bak -e 's/.$/4/' fichier
ou 's/.\?$/4/' sur toutes les lignes, mêmes vides. Pour la question
posée,
cd répertoire/ && sed -i.bak -e 's/.$/4/' *P*
donnera un avertissement si un nom de sous-répertoire contient un P.
> cf entre autres, http://cli.asyd.net/home/filtres/sed
Cf. aussi http://sed.sf.net/ et ses collections d'unilignes.
--
Jacques L'helgoualc'h
Reply to: