我想用垂直输出获取mysql查询的结果。 使用--vertical(或G)时我的问题是加星号的行。
$mysql -N -e 'select filed1, field2 from db.tlb\G'
*************************** 1. row ***************************
value1_field1
value1_field2
*************************** 2. row ***************************
value2_field1
value2_field2
...
是否有一个选项我没有找到摆脱*** [...] x行。排[...] ***?
目前,我正在使用 egrep -v'^ \ *。* \ * $',但我确信存在更好的解决方案。
答案 0 :(得分:0)
我不确定这是一个好的解决方案,但如果显式使用egrep
很烦人,你可以定义一个shell函数来启动mysql
所需的< EM>寻呼机。假设您正在使用 bash (或兼容):
# define a shell function to launch mysql with the required _pager_
sh$ mysql() { `which mysql` $* --pager="egrep -v '^\*.*\*$'" ; }
[ ... ]
# launch mysql "as usual" (in reality, this is the shell function that is invoked)
sh$ mysql -u user -p -h mysql-host mydb
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 67
Server version: 5.1.49-3 (Debian)
-- Use mysql normally -- but the "egrep pager" will remove the "star lines"
mysql> select * from T\G
col1: w
col2: x
col3: 0.4
1 row in set (0.00 sec)
正如我之前所说,这不是一个完美的解决方案,因为egrep
将盲目地从输出中删除任何“星线” - 不仅是来自 ego 的那个({{1} }})命令。
答案 1 :(得分:0)
尝试这个(但我无法想象为什么你需要这样的输出)
mysql -N -B -e 'select * from db' mysql | tr "\t" "\n"
答案 2 :(得分:0)
将改变MySQL寻呼机,如下所示:
<强> test.sh 强>
#!/usr/bin/env bash
# Some Basic Configuration
db="homestead"
dbuser="homestead"
dbhost="127.0.0.1"
# Executes the MySQL command using the basic configuration
# This also sets the MySql Pager to less -Sin to enable
# it also removes all lines starting with "*"
mysql -h $dbhost -u $dbuser -p --pager="grep -Ev '(^\*.*$)|(^$)' | less -Sin" $db
<强>用法强>
首先编辑配置变量:
$ nano ./test.sh
其次运行脚本
$ bash ./test.sh
在您已经进入MySQL CLI之后更改寻呼机
$ mysql -u root -p -h 127.0.0.1 somedatabase
enter password:
mysql> pager grep -Ev '(^\*.*$)|(^$)' | less -Sin