164 votes

En Bash, comment ajouter une chaîne après chaque ligne d'un fichier ?

Comment ajouter une chaîne de caractères après chaque ligne d'un fichier en utilisant bash ? Peut-on le faire en utilisant la commande sed, si oui comment ?

1voto

Synt4x 4rr0r Points 1

Il s'agit simplement de compléter l'utilisation de la commande echo pour ajouter une chaîne à la fin de chaque ligne d'un fichier :

cat input-file | while read line; do echo ${line}$"string to add" >> output-file; done

Ajout de >> dirige les changements que nous avons effectués vers le fichier de sortie.

-11voto

hendry Points 2237

Sed est un peu laid, vous pourriez le faire élégamment comme ceci :

hendry@i7 tmp$ cat foo 
bar
candy
car
hendry@i7 tmp$ for i in `cat foo`; do echo ${i}bar; done
barbar
candybar
carbar

2 votes

Échec pour les fichiers contenant plus de lignes que la limite maximale d'arguments du shell. Essayez : cat foo | while read a ; do echo ${a}bar ; done ou quelque chose comme ça à la place ; c'est un remplacement approprié de for in dans la plupart des cas.

1 votes

Il échoue également pour les lignes contenant des espaces.

1 votes

Euh, non, ça ne rate pas Dennis. La limite maximale d'arguments de l'obus ? Crikey, tu deviens pendulaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X