【发布时间】:2023-04-11 06:58:02
【问题描述】:
我正在尝试运行以下命令来生成my.cnf:
{
# Print version, user, host and time
echo -e "# MYSQL VARIABLES {{{1\n##\n# MYSQL `
mysql -V | sed 's,^.*\(V.*\)\, for.*,\1,'
` - By: `logname`@`hostname -f` on `date +%c`\n##"
for l in {a..z}; do
# Get mysql global variables starting with $l
echo '#'; mysql -NBe "SHOW GLOBAL VARIABLES LIKE '${l}%'" |
# Transorm it
sed 's,\t,^= ,' |
column -ts^ |
tr "\n" '@' |
eval $(echo "sed '" "s,@\("{a..u}{a..z}"\),\n\n\1,;" "'") |
eval $(echo "sed '" "s,@\(innodb_"{a..z}{a..z}"\),\n\n\1,;" "'") |
tr '@' "\n" |
sed 's,^,# ,g'
done
echo -e "#\n##\n# MYSQL VARIABLES }}}1";
} | tee ~/mysql-variables.log
(命令的原始来源:http://www.askapache.com/mysql/view-mysql-variables-my-cnf.html)
但是sed 不断抛出unterminated substitute pattern 错误:
sed: 3: " s,@\(aa\),\n\n\1,; s,@ ...": unterminated substitute pattern
sed: 2: " s,@\(innodb_aa\),\n\n\ ...": unterminated substitute pattern
#
sed: 3: " s,@\(aa\),\n\n\1,; s,@ ...": unterminated substitute pattern
sed: 2: " s,@\(innodb_aa\),\n\n\ ...": unterminated substitute pattern
#
如何干净利落地输出我当前的mysql变量?
【问题讨论】:
-
由于问题似乎仅与正则表达式有关,如果我是您,我将只提取您的这部分命令。恐怕您的命令行不是人类可读的。分而治之。
-
整个命令对我有用。您是从终端运行它,还是从其他东西启动它(我正在考虑在 bash 处理它们之前可以解释引号或
\n的东西)?另外,mysql -NBe "SHOW GLOBAL VARIABLES"是否按预期工作? -
感谢 Evan 使其具有可读性!
-
-_-" 好吧,如果您查看修订后的历史记录,您会发现 Evan 在这方面做得并不多。如果您不介意,我会感谢我的: )
-
对不起,我不知道:/