输出在一条线上

时间:2009-10-18 13:05:18

标签: unix sed awk

以下代码按预期工作。但我不能格式化输出。 它会打印出这样的东西:

mysql
test
someDB

我希望输出在一行

mysql test someDB

我尝试在脚本中使用sed,但它不起作用。

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

4 个答案:

答案 0 :(得分:10)

只要您想将所有输出行合并为一行,您也可以使用xargs:

e.g。

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

变为:

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

答案 1 :(得分:5)

您可以使用tr将输出转换为一行

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

答案 2 :(得分:1)

换行符很可能是由echo命令生成的,如果没有换行符,则以下内容应该相同(未测试)

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

并且还有额外的好处,只产生1个grep而不是3个grep进程。

答案 3 :(得分:1)

结合使用 naumcho rsp 的答案,这些答案适用于少量结果:

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