Bonjour,

j'ai un fichier simple nommé fichier.txt dont le contenu est basique comme ceci :
aaa
bbb
ccc
ddd
eee

Ensuite je tape la commande grep pour affichier ligne par ligne le contenu du fichier :
grep -i "[a-z]" ./fichier.txt
Ensuite, je voudrais ajouter en plus un traitement basique comme afficher un "Hello World !", à chaque ligne retournée par grep.

Le code serait du style :
grep -i "[a-z]" ./fichier.txt -exec echo "Hello World !" {} /;
Ce code ne marche pas car le -exec {} /; ne marche que pour find.

Donc ma question est la suivante :
comment appliquer un traitement supplémentaire à chaque ligne retournée par grep ?

Merci d'avance pour vos réponses, cordialement.

PS : je sais qu'il y a une méthode alternative, qui est de mettre les données du fichier dans une variable de type array et de boucler la variable array, mais j'évite cette méthode car j'en ai des milliers des données (donc qui consommeront beaucoup de mémoire si je les met toutes dans une variable array).
Bonjour,
totoAussi wrote: Ensuite je tape la commande grep pour affichier ligne par ligne le contenu du fichier :
grep -i "[a-z]" ./fichier.txt
C'est un peu tiré par les cheveux avec grep. Si tu as besoin d'effectuer un traitement par ligne, utilise cat en combinaison de read pour lire chaque ligne du fichier. read permet de stocker une chaîne lue sur l'entrée standard jusqu'à ce qu'un saut de ligne soit rencontré ; cat affiche le contenu d'un fichier sur la sortie standard. En redirigeant la sortie de cat vers l'entrée de read, on arrive à ce que tu veux :
cat fichier.txt | while read ligne; do
   # À chaque tour de boucle, la ligne courante est stockée dans la variable « $ligne »
   echo "Hello world! $ligne"
done
Tu peux condenser le code précédent en redirigeant le contenu du fichier directement dans la boucle, sans passer par cat :
while read ligne; do
   echo "Hello world! $ligne"
done < fichier
Bonjour Pikachu_2014,

FANTASTIQUE !

Merci Pikachu, c'est exactement ce qu'il me fallait.

Merci encore, résolu.