[script] modifier le dernier caractere de chaque ligne d'un fichier

Le
Alexandre Mackow
Bonjour à tous,
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.
Comment faire pour remplacer le dernier caractere de chaque ligne.
Certainement via sed mais je ne trouve pas l'option dernier caractere

Quelqu'un connait il une solution?
Par avance merci.

++





--
-
Alexandre Mackow



--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Galevsky
Le #9551891
---------- Forwarded message ----------
From: Galevsky Date: 29 mai 2007 16:11
Subject: Re: [script] modifier le dernier caractere de chaque ligne d'un fi chier
To: Alexandre Mackow

alors pour ce qui est des regexp..... le web regorge de doc.

pour info /.*(.).$/ se lit:

".*" => n'importe quel caractère un nombre inconnu de fois (0->n)
suivi de "(.)" un seul caractère qui est capturé, suivi de ".$" qui
signifie un seul caractère situé tout a la fin de la ligne. Et oui,
/^toto.*/ match une ligne commençant par toto, et /.*tata$/ une ligne
finissant par tata. Donc dans ton sed tu veux capturer tout sauf le
dernier caractère et ajouter un 4 :

[1016] echo "hello world" | sed -e "s/(.*).$/14/"
hello worl4

En ce qui concerne cycler dans ton répertoire, et faire le test du
filename qui possède un "P", je te laisse essayer par tes propres
moyens ;o)

Mais te donne au passage le lien suivant:
http://www.tldp.org/LDP/abs/html/index.html

Gal'

Le 29/05/07, Alexandre Mackow
Bonjour à tous,
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....
Comment faire pour remplacer le dernier caractere de chaque ligne....
Certainement via sed mais je ne trouve pas l'option dernier caractere...

Quelqu'un connait il une solution?
Par avance merci.

++





--
----------------
Alexandre Mackow



--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact .org




Alexandre Mackow
Le #9551871
Galevsky wrote:

---------- Forwarded message ----------
From: Galevsky Date: 29 mai 2007 16:11
Subject: Re: [script] modifier le dernier caractere de chaque ligne
d'un fichier
To: Alexandre Mackow

alors pour ce qui est des regexp..... le web regorge de doc.

pour info /.*(.).$/ se lit:

".*" => n'importe quel caractère un nombre inconnu de fois (0->n)
suivi de "(.)" un seul caractère qui est capturé, suivi de ".$" qui
signifie un seul caractère situé tout a la fin de la ligne. Et oui,
/^toto.*/ match une ligne commençant par toto, et /.*tata$/ une ligne
finissant par tata. Donc dans ton sed tu veux capturer tout sauf le
dernier caractère et ajouter un 4 :

[1016] echo "hello world" | sed -e "s/(.*).$/14/"
hello worl4

En ce qui concerne cycler dans ton répertoire, et faire le test du
filename qui possède un "P", je te laisse essayer par tes propres
moyens ;o)

Mais te donne au passage le lien suivant:
http://www.tldp.org/LDP/abs/html/index.html

Gal'



Yep merci à tous les 2 ( Thomas Clavier et galevsky )
C'est pile poil ce que je desirai....

Merci pour la reactivité....
++


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Daniel Caillibaud
Le #9551661
Alexandre Mackow wrote:

Bonjour à tous,
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

cf entre autres, http://cli.asyd.net/home/filtres/sed

--
Daniel


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Jacques L'helgoualc'h
Le #9551641
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


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Daniel Caillibaud
Le #9551601
Jacques L'helgoualc'h wrote:
On peut simplifier :

sed -i.bak -e 's/.$/4/' fichier



Oui, mais là tu remplace le dernier caractère de toutes les lignes par un 4.
J'avais compris qu'il fallait l'ajouter à la fin de la dernière ligne.

--
Daniel


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Edi STOJICEVIC
Le #9551591
* Alexandre Mackow
Bonjour à tous,
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....
Comment faire pour remplacer le dernier caractere de chaque ligne....
Certainement via sed mais je ne trouve pas l'option dernier caractere...

Quelqu'un connait il une solution?
Par avance merci.



Salut,

Tu as une liste dédié sur les shellscript disponible ici :
--> http://debianworld.org/?q=shellscript-fr

A+

--
. ''`. (___/) E d i S T O J I C E V I C
: :' : (='.'=) http://www.debianworld.org
`. `~' (")_(") GPG: 0x1237B032
`-


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Jacques L'helgoualc'h
Le #9551581
Daniel Caillibaud a écrit, mercredi 30 mai 2007, à 14:33 :
Jacques L'helgoualc'h wrote:
>On peut simplifier :
>
> sed -i.bak -e 's/.$/4/' fichier

Oui, mais là tu remplace le dernier caractère de toutes les lignes par un 4.
J'avais compris qu'il fallait l'ajouter à la fin de la dernière ligne.



Toutes les lignes non-vides. Alexandre demandait

«  si le nom du fichier contient un P alors remplacer le
dernier caractère par un 4.... »

Effectivement ambigu, mais la suite est claire

« Comment faire pour remplacer le dernier caractere de chaque ligne.... »

--
Jacques L'helgoualc'h


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Alexandre Mackow
Le #9551481
Edi STOJICEVIC wrote:

* Alexandre Mackow







Salut,

Tu as une liste dédié sur les shellscript disponible ici :
--> http://debianworld.org/?q=shellscript-fr

A+





Bonjour,
merci pour le lien j'y cours...
C'est donc resolu, merci sed et merci a tous ceux ayant apporté leur
contribution à la résolution de mon soucis.
Pour precision c'etait bien le dernier caractère de chaque ligne que je
devais modifier, comme l'indique le titre, mon corps de message etant un
peu plus confus.
Encore merci.
++


--
----------------
Alexandre Mackow



--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Publicité
Poster une réponse
Anonyme