开发者社区> 扬仔8888> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

用sed语法将pt-query-digest分析的mysql慢查询转换成html页面,简单转换但是看着方便多了

简介:
+关注继续查看

主要练习sed的部分高级语法和正则匹配,不过其实用perl语法更方便。主要sed语法如下

#处理pt-query工具分析后的mysql慢查询

#头部 尾部

#!/bin/bash

echo "used: sh chsqltohtml.sh abc.log,it will create abc.html to the current path"

SLOWLOG=$1

INDEXHTML=`echo $SLOWLOG|cut -d . -f 1`.html

echo $SLOWLOG

echo ${INDEXHTML}

sed  -e '1 s/^$/<html>\n\t<head><meta charset="gbk" \/>\n<title>'$SLOWLOG'慢查询<\/title> \n\t<\/head>\n\t\t<body bgcolor="#87CEEB">\n\t\t<h3 style="color:green;font-size:40px;text-align:cen

ter;"><i>'$SLOWLOG'慢查询<\/i><\/h3>\n<hr color=green>\n<table border="1", bgcolor="#9ACD32">\n<tr><td> /' -e '$a\<hr color=red>\n</body>\n</html> ' -e 's/^#/<br>#/'   ${SLOWLOG} >${INDEXHTML}


sed -i -e    '/^<br># Attribute/i\</td></tr></table>\n<table border="1">'  ${INDEXHTML}

sed -i -e    '/^<br># Query size/a\</table>'   ${INDEXHTML}

sed -i -e    '/^<br># MISC/i\</table>'    ${INDEXHTML}

sed -i -e    '/^<br># Query 1/i\</table>'  ${INDEXHTML}

#sed -i -e    's/^$/<hr color=red>/' ${INDEXHTML}

sed -i -e    '/^<br># Profile/i\<hr color=red>\n' ${INDEXHTML}


#替换

sed -i  -e 's/<br># Exec time/<tr><td>Exec_time/g'  -e 's/<br># Lock time/<tr><td>Lock_time/g'  -e 's/<br># Rows sent/<tr><td>Rows_sent/g' -e 's/<br># Rows examine/<tr><td>Rows_examine/g'  -

e 's/<br># Query size/<tr><td>Query_size/g'  -e 's/<br># Rank Query ID/<table border="1">\n<tr><td>Rank Query ID/g'  ${INDEXHTML} 

#1-20个空格

sed -i -e '/Exec_time/s/[ ]\{1,20\}/<\/td><td>/g'  -e '/Exec_time/s/$/<\/td>/g' ${INDEXHTML}

sed -i -e '/Lock_time/s/[ ]\{1,20\}/<\/td><td>/g'  -e '/Lock_time/s/$/<\/td>/g' ${INDEXHTML}

sed -i -e '/Rows_sent/s/[ ]\{1,20\}/<\/td><td>/g'  -e '/Rows_sent/s/$/<\/td>/g' ${INDEXHTML}

sed -i -e '/Rows_examine/s/[ ]\{1,20\}/<\/td><td>/g'  -e '/Rows_examine/s/$/<\/td>/g' ${INDEXHTML}

sed -i -e '/Query_size/s/[ ]\{1,20\}/<\/td><td>/g'  -e '/Query_size/s/$/<\/td>/g' ${INDEXHTML}

sed -i -r 's/<tr><td>(Rank\s+)(Query ID\s+)(Response\s+)(time\s+)(Calls\s+)(R\/Call\s+)(V\/M\s+)(Item)/<tr><td>等级<\/td><td>Query ID<\/td><td>响应时间<\/td><td>时间占比<\/td><td>执行次数<\/

td><td>平均响应时间<\/td><td>\7<\/td><td>语句<\/td>/g'  ${INDEXHTML}

#删除多余===

sed -i '/=\{3,20\}/d' ${INDEXHTML} 

sed -i 's/<br># Attribute/<tr><td>Attribute/g' ${INDEXHTML}

sed -i -e '/Attribute/s/[ ]\{1,20\}/<\/td><td>/g'  -e '/Attribute/s/$/<\/td>/g' ${INDEXHTML}

#sed -i -e '/MISC 0xMISC/s/$/<\/td>\n<\/table>/g' ${INDEXHTML}

###超链接

sed -i -r 's/^<br>#(\s+[0-9]{1,2}\s+)(0x[A-Z0-9]+)(\s+[0-9]{1,10}\.[0-9]{1,4}\s+)([0-9]{1,3}\.[0-9]%\s+)([0-9]{1,9}\s+)([0-9]{1,10}\.[0-9]{1,4}\s+)([0-9]{1,9}\.+[0-9]*\s+)(.+)/\<tr><td>\1\<\

/td><td><a href="#\2\">\2<\/a>\<\/td><td>\3\<\/td><td>\4\<\/td><td>\5\<\/td><td>\6\<\/td><td>\7\<\/td><td>\8\<\/td>/g' ${INDEXHTML}

sed -i -r 's/<br># Query(\s+[0-9]+:\s+)([0-9]+\.[0-9]{1,4}\s+)QPS,(\s+[0-9]+\.[0-9]+).*(0x[A-Z0-9]+)(\s+at byte\s+[0-9]+)/\<hr color=red>\n<br># Query\1\2\3\x concurrency, ID <a name="\4\">\

4\<\/a>\5/g' ${INDEXHTML}

echo "over"



b78a3c425c085100b10741d89ae761bc02d49aa3



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(五)
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(五)
24 0
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(六)
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(六)
50 0
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(七)
商城项目02_环境搭建、安装vagrant、docker、mysql、redis、从0搭建各个微服务项目、数据库初始化(七)
45 0
MySQL 源码scr.rpm安装的一点注意事项
    rpm安装包通常为二进制包(Binary)以及源代码包(Source)两种形式。在使用源码方式安装MySQL的时候,官方网站上下载的源码包通常为scr.rpm格式,而不是直接的tar包,对此,需要先使用rpm命令先安装源码后在进行编译安装,本文是对该方式的描述。
813 0
安装MySQL样本数据库Sakila
    通常情况下对于一个全新的MySQL服务器,没有任何数据供我们测试和使用。对此,MySQL为我们提供了一些样本数据库,我们可以基于这些数据库作基本的操作以及压力测试等等。
803 0
2.安装号mysql后当重启Linux服务器之后发现进入不了的解决方案
 1 以root身份登录redhat操作系统 2 查看mysql的相关进程 ps –u mysql 3 杀死mysql的进程6195 Kill -9 6195 4 启动mysql服务 service mysql start(这一步也可以不要,但是要看是否自动启动了mysql服务) 5 登录mysql
1202 0
解压版MySQL安装说明
一、复制my.ini到MySQL解压的目录 例如:E:\MySQL 二、修改my.ini第39~40行 basedir = "E:\\MySQL" datadir = "E:\\MySQL\\data" 三、检查电脑上是否安装过MySQL服务 我的电脑-->管理-->服务和应用程序-->...
727 0
ubuntu下安装mysql
  现在的软件越来越好安装,尤其是在ubuntu下安装软件,更是没有技巧,只需要在联网的情况下使用apt-get inatll 即可。在决定安装mysql之前,要先确定系统是否已经安装mysql。如下图:        由此可以看出系统中并没有安装mysql.下面执行sudo apt-get install mysql-server my-client进行安装。下图:  
1265 0
CentOS安装mysql*.rpm提示conflicts with file from package的解决办法
CentOS 6.5下安装MySql 5.6 解压文件:tar xvf MySQL-5.6.19-1.linux_glibc2.5.x86_64.rpm-bundle.tar 释放出以下文件: MySQL-embedded-5.
582 0
linux mysql 卸载,安装,测试全过程
 Mysql卸载 yum remove mysql mysql-server mysql-libs compat-mysql51 rm -rf /var/lib/mysql rm /etc/my.cnf 查看是否还有mysql软件: rpm -qa|grep mysql 有的话继续删除 Mysql安装 1>若本地没有安装包 可以考虑使用yum命令进行下载 # yum
1762 0
+关注
9
文章
3
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载