Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ajout de caractères dans liste

4 réponses
Avatar
gouja
Bonjour

J'ai une liste dans un fichier comme ceci :

nom1
nom2
nom 3
nom 4
[...]
nom35000

Je cherche à la modifier pour qu'elle ressemble à ceci :

/nom1.jpg
/nom2.jpg
/nom 3.jpg
/nom 4.jpg
[...]
/nom35000.jpg

le besoin est d'ajouter un / au début de chaque ligne et un .jpg à la fin,
sachant que certains nom comportent un espace.

Merci pour votre aide.

4 réponses

Avatar
Jacques L'helgoualc'h
Le 28-10-2008, gouja a écrit :
Bonjour



Bonjour,

J'ai une liste dans un fichier comme ceci :

nom1
nom2
nom 3
nom 4
[...]
nom35000

Je cherche à la modifier pour qu'elle ressemble à ceci :

/nom1.jpg
/nom2.jpg
/nom 3.jpg
/nom 4.jpg
[...]
/nom35000.jpg

le besoin est d'ajouter un / au début de chaque ligne et un .jpg à la fin,



sed -e 's,^,/,' -e 's/$/.jpg/' <liste >liste_modif

ou avec Gnu sed,

sed -i.old -e 's,^,/,;s/$/.jpg/' liste

sachant que certains nom comportent un espace.



C'est Mal(c)(r).

Merci pour votre aide.



de rien,
--
Jacques L'helgoualc'h
Avatar
gouja
gouja le mardi 28 octobre 2008 11:53

Bonjour

J'ai une liste dans un fichier comme ceci :

nom1
nom2
nom 3
nom 4
[...]
nom35000

Je cherche à la modifier pour qu'elle ressemble à ceci :

/nom1.jpg
/nom2.jpg
/nom 3.jpg
/nom 4.jpg
[...]
/nom35000.jpg

le besoin est d'ajouter un / au début de chaque ligne et un .jpg à la fin,
sachant que certains nom comportent un espace.

Merci pour votre aide.



Je me réponds, j'ai trouvé en bricolant un peu ...

Pour ajouter ".jpg" à la fin :
$ toto=".jpg"
$ while read line; do echo $line$toto; done <fichier > fichier_new

Pour ajouter "/" au début de chaque ligne :
$ toto="/"
$ while read line; do echo $toto$line; done <fichier_new > fichier_new_ok
Avatar
gouja
Jacques L'helgoualc'h le mardi 28 octobre 2008 12:05

le besoin est d'ajouter un / au début de chaque ligne et un .jpg à la
fin,



sed -e 's,^,/,' -e 's/$/.jpg/' <liste >liste_modif

ou avec Gnu sed,

sed -i.old -e 's,^,/,;s/$/.jpg/' liste





Merci, cest quand même plus pratique mon bricolage. Je garde au chaud.
Avatar
Stephane CHAZELAS
2008-10-28, 12:06(+01), gouja:
[...]
Pour ajouter ".jpg" à la fin :
$ toto=".jpg"
$ while read line; do echo $line$toto; done <fichier > fichier_new


[...]

Non, ca ne marchera pas dans un tas de cas. En regle generale,
il vaut mieux eviter les boucles dans les shells, surtout pour
processer du texte(*).

sed 's|.*|/&.jpg|' < fichier > fichier.new

awk '{print "/" $0 ".jph"}' < fichier > fichier.new

(*) a l'extreme limite, tu aurais pu faire:
while IFS= read -r line
do printf '/%s.jpgn' "$line"
done < fichier > fichier.new

Mais a mon avis, c'est idiot de lancer plusieurs commandes pour
chaque ligne d'un fichier quand on peut en lancer une seule pour
tout le fichier.

--
Stéphane