1

我正在做一个使用 BASH 作为“电话簿”的小项目。它将数据存储在 mysql 数据库中,并使用临时文件来处理 Selects。

我正在使用 zenity 可视化界面,所以我想使用 Zenity 列表对话框显示存储在数据库中的数据。为此,我需要单独使用列的值,因此我需要使用 awk 命令来获取这些值,但是在组合 zenity 和 awk 命令时遇到了麻烦。

存储数据库的值,在临时文件中用 \t 分隔。

echo "SELECT name,address,telephone,email FROM agenda" | mysql projAgenda -N -u root -p12345 >> tempAgenda.dat

使用 zenity --list 显示数据

awk -F'\t' '{zenity --list --title="Listar registos" --text="" --column="Name" --column="Address" --column="Telephone" --column="E-mail" $1 $2 $3 $4}' tempAgenda.dat

但我总是遇到同样的错误:

awk:第 1 行:在 = 处或附近出现语法错误

有人可以帮忙吗?我知道我可能会在尝试混合这两个命令时搞砸了,但想不出另一种方式。

编辑:查询的输出(由选项卡分隔):

José Manel  Rua António Cão 219886868   zemaneli@live.com 
Cláudio Pinto   Praça Dom Rui da Camara 219886820   claudiopinto@live.com
4

1 回答 1

2

您需要用新行替换 mysql 返回的制表符分隔符,因为zenity从标准输入读取时,每列都在单独的行上。您可以tr为此使用:

mysql -N ... | tr '\t' '\n' | zenity --list --title="Listar registos" --text="" --column="Name" --column="Address" --column="Telephone" --column="E-mail" 

这将产生以下列表:

在此处输入图像描述

于 2015-05-30T15:24:15.603 回答