Bonjour à tous,
Je travaille actuellement sur un script qui mélange du PHP et du awk dans un bash.
J'ai procédé à des redirections qui me semblent subtiles et me permettent de gagner du temps :
(awk1 <fich1 & php) | awk2 >fich2
Le script PHP génère un fichier icecat_data.csv qui est lu en tâche de fond pour nettoyer les espaces et les guillemets doubles. Tout cela fonctionne correctement. Il me reste toutefois une problématique que je n'ai pas réussi à régler.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ( awk -F";" 'BEGIN { OFS=";"}{ gsub(/ * /," "); print;fflush()}' < icecat_data.csv & php Recup_Icecat.php) | awk -F";" 'BEGIN { OFS=";"}{ gsub(/\"\"\"/,"\""); print; fflush()}1' > icecat_data_net.csv ;
En effet, le script PHP génère des messages sur la sortie standard via de simple echo. Lorsque je le lance seul, pas de problèmes, en revanche dans cette succession de process, plus rien en affichage! Pour des petits traitements ce n'est pas grave mais pour un fichier de plusieurs dizaines de milliers de ligne, on aura l'impression que la chose est figée.
D'où ma question, comment faire pour conserver l'affichage sur la sortie standard dans cette succession de commande?
J'ai essayé :
- (awk1 <fich1 | awk2 >fich2 ) & php affiche la sortie php mais ne restitue pas correctement fich2
- ( awk2 >fich2 & awk1 <fich1 ) & php affiche la sortie php mais ne restitue pas correctement fich2
je suis ouvert à d'autres propositions ;-)
Merci d'avance de vos propositions.
Partager