while read pos; do
string1=`echo $pos | cut -c 20-38`
string2="=$pos"
string3="$string1 $string2"
echo "$string3"
done < file
C'est le code de mon script. Je souhaite afficher la sortie sur une seule ligne, mais la sortie apparaît sur des lignes différentes. Comment puis-je faire ceci?
ex-pos = abcdefghi1234567890QWERTYUXY.tar.gz chaine1 = 1234567890QWERTYUXY chaine2 = abcdefghi1234567890QWERTYUXY.tar.gz
sortie souhaitée:
1234567890QWERTYUXY abcdefghi1234567890QWERTYUXY.tar.gz
Réponses:
Au début, votre script contient plusieurs fautes de frappe. En dehors de cela, vous pouvez utiliser
pour imprimer variable
string3
, sans ajouter de saut de ligne après cela.De
man echo
:la source
-n
devrait être disponible, sauf si vous utilisez un shell exotique.vous souhaitez utiliser
tr -d '\n'
à la fin de l'$string1
affectation pour supprimer le saut de ligne présent dans votre fichier:notez cependant que cela donnera le résultat:
avec
pos = abcdefghi1234567890QWERTYUXY.tar.gz
et le script que vous avez donné.la source
Il y a beaucoup d'options, mais la façon dont je recommanderais est
printf
.Il n'imprime pas de nouvelle ligne par défaut, vous devez
echo
doncprintf
supprimer la nouvelle ligne indésirable.Ou peut-être juste
Sortie
Cela dit, votre script original fonctionne aussi pour moi. : - /
Sortie
la source