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

HS - shell concaténer des chaines

3 réponses
Avatar
Fabrice Régnier
salut la liste ;)

Je lis un fichier ligne par ligne et je voudrais concaténer toutes mes
lignes dans une seule variable. Mais je bute sur la concaténation. Si
quelqu'un peut m'aider ;)


cat mon_fic | while read ligne
do
variable=`echo $ligne`

#c'est ici que ça cloche
chaine=$chaine$ligne

done

echo $chaine


a+

f.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter 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

3 réponses

Avatar
Jean-Damien Durand
Une facon parmi d'autres:

chaine=`cat mon_fic | perl -pe 's/n//g'`

A+, JD.

On Monday 16 May 2005 18:09, Fabrice Régnier wrote:
FR > salut la liste ;)
FR >
FR > Je lis un fichier ligne par ligne et je voudrais concaténer toutes mes
FR > lignes dans une seule variable. Mais je bute sur la concaténation. Si
FR > quelqu'un peut m'aider ;)
FR >
FR >
FR > cat mon_fic | while read ligne
FR > do
FR > variable=`echo $ligne`
FR >
FR > #c'est ici que ça cloche
FR > chaine=$chaine$ligne
FR >
FR > done
FR >
FR > echo $chaine
FR >
FR >
FR > a+
FR >
FR > f.
FR >
FR >

--
Jean-Damien Durand CERN/IT/ADC/CA - Geneva, Switzerland
PGP PUBLIC KEY: http://home.cern.ch/~jdurand/public_key.asc
This mail is signed using CERN CA, please use my PGP key otherwise
CERN CA root certificate: http://cern.ch/service-grid-ca/crt/root_crt.html
Avatar
Jacques L'helgoualc'h
Bonsoir,

Jean-Damien Durand a écrit, lundi 16 mai 2005, à 20:38 :
Une facon parmi d'autres:

chaine=`cat mon_fic | perl -pe 's/n//g'`



0) UUOC ! « cat mon_fic | » = « < mon_fic »

1) Perl, c'est lourd,

chaine="$( tr -d 'n' < mon_fic )"

FR > cat mon_fic | while read ligne
FR > do
FR > variable=`echo $ligne`
FR >
FR > #c'est ici que ça cloche
FR > chaine=$chaine$ligne
FR >
FR > done
FR >
FR > echo $chaine



Dans un read, $IFS est le séparateur de champs ; comparer avec ou sans :

(
IFS="n" ; tout='' ;
while read ligne
do
tout="$tout$ligne"
done < mon_fich
echo "$tout"
)

Les parenthèses évitent d'avoir à restaurer $IFS.

PS. on trouve ce genre de choses dans news:fr.comp.os.unix
--
Jacques L'helgoualc'h


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Fabrice Régnier
merci beaucoup pour :

(
IFS="n" ; tout='' ;
while read ligne
do
tout="$tout$ligne"
done < mon_fich
echo "$tout"
)



Cela m'a permis de découvrir $IFS,le parentésage pour indiquer que c'est
un sous-shell et "while read champ1 champ2 champ3" au lieu des
instructions "while read ligne" et "variable1=`echo $laligne | awk -F:
'{print $1 }'`"

a+

f.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

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