2009-10-18 6 views
2

Le code suivant fonctionne comme prévu. Mais je ne peux pas formater la sortie. Il imprime quelque chose comme ceci:Sortie sur une seule ligne

mysql 
test 
someDB 

Je veux la sortie sur une seule ligne

mysql test someDB 

J'ai essayé d'utiliser sed dans le script, mais il ne fonctionne pas.

#!/bin/sh 
for dbName in `mysqlshow -uroot -pPassWord | awk '{print $2}'` 
do 
echo "$dbName" | egrep -v 'Databases|information_schema'; 
done 

Répondre

1

Pour faire une variation combinant naumcho 's et rsp' réponses s qui fonctionnera pour un petit nombre de résultats:

echo $(mysqlshow -uroot -pPassWord | awk '{print $2}' | egrep -v 'Databases|information_schema') 
1

La nouvelle ligne est générée par la commande echo le plus probable, ce qui suit devrait faire la même chose sans les sauts de ligne (non testé)

mysqlshow -uroot -pPassWord | awk '{print $2}' | egrep -v 'Databases|information_schema' 

et a l'avantage de la ponte à seulement 1 grep au lieu de 3 processus grep.

+0

Est-ce que awk n'est pas non plus en train d'imprimer des sauts de ligne? –

+0

encore mieux ... juste une commande awk: mysqlshow -uroot -pPassWord | awk '!/Bases de données | information_schema/{print $ 2}' – ghostdog74

9

chaque fois que vous voulez combiner toutes les lignes de sortie en un seul, vous pouvez également utiliser xargs:

par exemple

find 
. 
./zxcv 
./fdsa 
./treww 
./asdf 
./ewr 

devient:

find |xargs echo 
. ./zxcv ./fdsa ./treww ./asdf ./ewr 
5
vous

pouvez utiliser tr pour obtenir votre sortie à une ligne

<output from somewhere> | tr "\n" " " 
Questions connexes