Concatène la sortie de deux commandes en une seule ligne
J'ai un très de base en shell script ici:
for file in Alt_moabit Book_arrival Door_flowers Leaving_laptop
do
for qp in 10 12 15 19 22 25 32 39 45 60
do
for i in 0 1
do
echo "$file\t$qp\t$i" >> psnr.txt
./command > $file-$qp-psnr.txt 2>> psnr.txt
done
done
done
command
calcule certaines valeurs de PSNR et écrit un résumé détaillé d'un fichier pour chaque combinaison de file
qp
et i
. C'est très bien.
La 2>>
sorties d'une ligne d'information que j'ai vraiment besoin. Mais lorsqu'il est exécuté, j'obtiens:
Alt_moabit 10 0
total 47,8221 50,6329 50,1031
Alt_moabit 10 1
total 47,8408 49,9973 49,8197
Alt_moabit 12 0
total 47,0665 50,1457 49,6755
Alt_moabit 12 1
total 47,1193 49,4284 49,3476
Ce que je veux, cependant, est-ce:
Alt_moabit 10 0 total 47,8221 50,6329 50,1031
Alt_moabit 10 1 total 47,8408 49,9973 49,8197
Alt_moabit 12 0 total 47,0665 50,1457 49,6755
Alt_moabit 12 1 total 47,1193 49,4284 49,3476
Comment puis-je y parvenir?
(N'hésitez pas à changer le titre si vous pensez qu'il y a de plus approprié)
source d'informationauteur slhck
Vous devez vous connecter pour publier un commentaire.
L' (version GNU de) echo utilitaire a une option-n pour omettre la fuite de saut de ligne. Utiliser que sur votre premier écho. Vous aurez probablement à mettre un peu d'espace après la première ligne, soit avant la seconde pour des raisons de lisibilité.
Vous pouvez passer le
-n
option pour votre premièreecho
de commande, de sorte qu'il n'est pas sortie d'un retour à la ligne.Comme une démonstration rapide, ce :
vous obtiendrez :
Avec un saut de ligne entre les deux sorties.
Tout cela, avec une
-n
pour la premièreecho
:vous obtiendrez le résultat suivant :
Sans aucun retour à la ligne entre les deux sorties.
printf est la bonne façon de résoudre votre problème (+1 kurumi), mais pour être complet, vous pouvez également le faire:
Vous pouvez utiliser
printf
au lieu deecho
qui est mieux pour des raisons de portabilité.