grep快速过滤文件中特定的某种类型的数据

有这么一个需求,需要将有好几千条查询语句及其执行结果的一个文件中中文名换成一个中文加一个星号的形式(如:李*),其中有一部分数据已经是这种形式的,有一部分数据是证件号码、电话号码类型的等等,类似下面的测试文件,我们需要做的是将中文名上面的sql语句过滤出来,且排除掉已经带有星号的结果的sql语句。如果手动一条一条地将每一个这样的sql找出来将耗费大量的时间,有没有简便的方法呢?

 考虑使用grep来实现,代码如下:

#先过滤掉带*的行,剩下的过滤出带"姓名"的及其上的4行(剔除除姓名外的其他类型的数据),然后从过滤出的数据中过滤含有"select"的行
cat test.txt |grep -v ".*\*.*"|grep -B 4 "姓名"|grep "select">a.txt

查看最终的数据,已经将需要的数据全都提取出来了:

tips:grep过滤之前或者之后的几行使用参数为:

-A <行数>: 显示符合条件的行及其后的若干行

-B <行数>: 显示符合条件的行及其前的若干行

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值