Linux修炼之道-文本处理三剑客(grep)
在庞大的Linux世界里,所有的交互大部分都是通过bash命令来完成,而在平时的实际开发中,没有图形化的界面,我们可能经常需要对文本进行处理,比如获取项目的配置信息,日志等操作,大部分操作我们都需要自动化来完成,而非人肉式操作,比如批量获取gz001-gz100服务器中的2018-11-25的日志,这时我们不可能通过cat、head命令来一个个查看操作,这时我们可以通过grep命令来实现我们的需求。
首先讲述一下grep是什么?
grep : 文本搜索工具,根据用户指定的‘模式对目标文件逐步进行匹配检查,打印匹配到的行
语法格式如下:
grep [-acinv] [--color=auto] '搜寻字符串' filename
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
-E : 正则匹配
--color=auto :可以将找到的关键词部分加上颜色的显示喔!
看到以上的语法,便能很直观的看到我们需要做的操作,下面我们实际应用一下:
场景A:获取env环境配置文件中的数据库密码
解决:根据上图我们可以看到数据库密码储存在DB_PASSWORD中,我们可以直接通过一下以下操作来实现
grep DB_PASSWORD .env
看到以上操作,我们便很轻松获取到了该项目的数据库密码配置,如果需要获取gz001-gz100的数据库密码,我们便可以轻松的通过grep命令来拿到,或者集成到了一个shell脚本,更轻松的完成这个需求.
写到这里,我们再横向扩展一下.
场景B:获取env环境配置文件中的包含数字的行
解决:此时我们可以利用到参数了,通过参数来实现这个需求,"-E"正则匹配便可以轻松实现.
grep -E '[0-9]+' .env
写到这里,我们再扩展一下:
场景C:获取env环境配置文件中非DB开头的行,并且展示出对应的行号.
解决:我们可以先通过-E正则表达式来获取到,然后通过-v取反,最后通过-n展示出对应的行号.
grep -Evn '^DB' .env
PS:如果文件中存在空行,也会被匹配出来.
如果我们,想要匹配不把空号显示出来,我们可以改善一下正则.
grep -Evn '^DB|^$' .env
小结:学习了以上的几个参数的使用,我们便可以轻松实现实际开发中,需要查找文本信息、或者匹配文本信息的需求.如有错误,尽请指出!
这个人暂时没有 freestyle