shell - lire 2 fichiers en parallèle ?

Marc Chantreux khatar at phear.org
Thu May 5 17:52:12 CEST 2011


On Thu, May 05, 2011 at 05:23:15PM +0200, Jeremy Monnet wrote:
> Salut,
> 
> Question posée par un collègue, qui pour moi n'est pas solvable en
> shell : peut-on lire 2 fichiers en parallèle ?

en zsh (je veux meme pas me rappeller des autres shells): 

exec {data}< foo.txt 
exec {data2}< bar.txt

# $data et $data2 contiennent des fileno

while {read -u $data foo } {
    read -u $data2 bar
    print "$foo|$bar"
}

mais le principe est dans les shells posix: 

- exec avec des redirections te permet de faire des open et
  close (mais dans les vieux shells tu te tappes le fileno a la main :))
- une fois ouverts, les filenos sont utilisables par toutes les
  redirections (comme 0, 1 et 2)

donc en sh tu vas écrire un truc du genre 

exec 3< foo.txt # ouverture en lecture 
exec 4> bar.txt # ouverture en écriture
read line <&3   # lire une ligne de foo.txt 
pwd  >&4        # écrire le repertoire courant bar.txt 

exec 3>&- # clore les fichiers
exec 4>&-

maintenant: c'est pas parceque tu peux que tu dois! verifie bien
qu'aucun filtre standard (join, paste, ...) ne colle a ton pb! 

marc 


More information about the Shell mailing list