【问题标题】:Formatting SHOW ENGINE INNODB STATUS outputs when “\n” are embedded as Text当“\n”嵌入为文本时,格式化 SHOW ENGINE INNODB STATUS 输出
【发布时间】:2026-02-06 20:25:02
【问题描述】:

我指的是这个link

我通过这个命令有一个输出:

mysql -e "show engine innodb status" -u -p database > mydumpfile.txt

但是,我使用的任何编辑器(less、vim、kwrite)都显示\n,而不是真正的新行。

如何在 shell 中使用 sed、awk 或任何其他工具完成替换?

【问题讨论】:

    标签: mysql shell sed awk newline


    【解决方案1】:

    您可以使用以下 sed 语法。

    sed -i -e 's|\\n|\n|g' mydumpfile.txt
    

    如果你想直接从 mysql 正确输出,那么在 mysql 命令中使用 --table 选项。

    mysql --table -e "show engine innodb status" -u -p database > mydumpfile.txt
    

    【讨论】:

      【解决方案2】:

      尝试在 SQL 命令中简单地添加\G,例如:

      mysql -e "show engine innodb status\G" -u -p database > mydumpfile.txt

      或者尝试使用-r(或--raw)开关运行mysql客户端。

      mysql -re "show engine innodb status" -u -p database > mydumpfile.txt

      使用这两种方法中的任何一种,您也可以跳过中间文件,直接通过管道输入less。如:

      mysql -re "show engine innodb status" -u -p database | less

      附注,指定数据库不是必需的。我把它包括在内只是为了与你的问题相提并论。如果您还设置了 my.cnf 文件,因此不需要输入密码,则可以将其缩短为:

      mysql -re "show engine innodb status" | less

      【讨论】: