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