Re: shell - lire 2 fichiers en parallèle ?

Christophe Martin Christophe.Martin at univ-brest.fr
Thu May 5 18:08:41 CEST 2011


Bonjour,

Le 5 mai 2011 à 17:33, Jeremy Monnet a écrit :
> Comme souvent, après avoir posé, on trouve une réponse :
> exec 3<toto
> exec 4<toto.bak
> while IFS= read -r un <&3; read -r deux <&4; do echo "1 : $un, 2: $deux"; done
> 1 : patate, 2: patate
> 1 : tata, 2: tata
> 1 : titi, 2: titi
> 1 : tutu, 2: tutu

Pas mal du tout. Très bien vu même ! Si un fichier est plus long que l'autre et qu'on veut aller au bout du second, il faut modifier un peu. voilà mon idée :

exec 3<toto1 4<toto2 ; stop1= stop2= 
while
  read -r un <&3 || { un=PLUSRIEN ; stop1=1; }
  read -r deux <&4 || { deux=PLUSRIEN ; stop2=1; } 
  test ! '(' "$stop1" -a "$stop2" ')'
do
  echo "1 : $un, 2: $deux"
done
exec 3>&- 4>&-

1 : 1, 2: un
1 : 2, 2: deux
1 : 3, 2: trois
1 : 4, 2: quatre
1 : 5, 2: PLUSRIEN
1 : 6, 2: PLUSRIEN
1 : 7, 2: PLUSRIEN

bonsoir



More information about the Shell mailing list