当前目录下,查找内容包含"10.20"的所有文件:
find . -name "*.*" | xargs grep --color=auto "10\.20"
小数点加斜杠转义。否则会匹配任何字符。
--color=auto 对查找到的关键字高亮显示
查找日志文件中,SQL执行时间超过1秒的语句:
find . -name "*_cli.log" | xargs grep -E "RunTime:[1-9][0-9]{0,5}\.[0-9]{6}" --color=auto
find . -name "*_cli.log" | xargs grep -E ".*RunTime:[1-9][0-9]{0,5}\.[0-9]{6}.*" --color=auto
......
[2021-04-17T11:21:41+08:00][ sql ] [ SQL ] SELECT * FROM `sd_diamond` WHERE `add_time` < 1617292800 ORDER BY `id` ASC LIMIT 100 [ RunTime:2.586686s ]
经测试,将以上命令中的 xargs grep -E 换成 xargs grep -e 没有匹配到任何项
查询某个用户相关的所有数据表更新操作
find 202105 -name "1620729*-11_cli.log" | xargs grep --color=auto "UPDATE.*WHERE \`memid\` = 35973"
显示
:
202105/1620729014-11_cli.log:[2021-05-11T18:30:13+08:00][ sql ] [ SQL ] UPDATE `sd_member_otherinfo` SET `memid` = 35973 , `online_tiantimes` = 3905 , `online_tian` = 20210511 , `edit_time` = 1620729013 WHERE `memid` = 35973 [ RunTime:0.012551s ]
202105/1620729027-11_cli.log:[2021-05-11T18:30:25+08:00][ sql ] [ SQL ] UPDATE `sd_hongbao_yongjin_ts` SET `ts` = 1620729025 WHERE `memid` = 35973 [ RunTime:0.000586s ]
grep -e
可按正则表达式查询
例:在TP5的运行日志中,按正则表达式,查找用户表某个用户的资产更新SQL记录。
假设今天是15号,在 runtime/log
指定日期的目录下,有很多后缀为 .log 的文件。执行下列语句查询
find . -name "*-15_sql.log" | xargs grep --color=auto -e "UPDATE `yoshop_user`.*balance.*115080"
. (dot) 任意单一字符
\d 任意一位数字
[A-Z] A 到 Z中任意一个字符(大写)
[a-z] a 到 z中任意一个字符(小写)
[A-Za-z] a 到 z中任意一个字符(不区分大小写)
+ 匹配一个或更多 (例如, \d+ 匹配一个或 多个数字字符)
[^/]+ 一个或多个不为‘/’的字符
* 零个或一个之前的表达式(例如:\d? 匹配零个或一个数字)
* 匹配0个或更多 (例如, \d* 匹配0个 或更多数字字符)
{1,3} 介于一个和三个(包含)之前的表达式(例如,\d{1,3}匹配一个或两个或三个数字)
vim 编辑器
:set magic
这句的作用在于将vim的正则打开.
/UPDATE `yoshop_user`.*balance.*115080
多文件中批量替换某字符:
sed -i "s/originData/myDataNew/g" `grep originData -rl ./`
sed -i "s/originData/myDataNew/g" `find . -name "*.php"|xagrs grep "originData" rl`
sed -i "s/originData/myDataNew/g" `find . -name "*.php"|xagrs grep -F "originData" -rl ./`
查找关键字:
返回行内容
grep word fileName
返回文件列表
grep word -rl ./
返回文件名和行内容
grep word file1 file2 file3
Vim中如何使用正则进行搜索 https://www.cnblogs.com/drgcaosheng/p/4581460.html