[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: