shell正则式解析身份证和手机号
cat test2.html | sed -e 's/\(^\|[^0-9]\)\(13[0-9][0-9]\{8\}\|14[579][0-9]\{8\}\|15[0-3,5-9][0-9]\{8\}\|16[6][0-9]\{8\}\|17[0135678][0-9]\{8\}\|18[0-9][0-9]\{8\}\|19[89][0-9]\{8\}\)\($\|[^0-9]\)/\nfind_phone:\2\n/g' | sed -e 's/\(^\|[^0-9]\)\([0-9]\{6\}[1-2][0-9]\{3\}\(\(0[1-9]\)\|\(10\|11\|12\)\)\(\([0-2][1-9]\)\|10\|20\|30\|31\)[0-9]\{3\}[0-9Xx]\)\($\|[^0-9]\)/\nfind_idcard:\2\n/g' | awk '/find_.*/{printf $1;printf "\t"}'
测试文件test2.html内容:
dddd
bbb131102198910084421ccc eee13611112222fff13133334444
h15855556666j
aaaa
13177778888
13199990000
18611112222
370785199507319527
测试结果:
find_idcard:131102198910084421 find_phone:13611112222 find_phone:13133334444 find_phone:15855556666 find_phone:13177778888 find_phone:13199990000 find_phone:18611112222 find_idcard:370785199507319527
身份证号正则式:https://www.jb51.net/article/109384.htm
只是参考,不能直接用,shell中或|要加\;左右括号()也要加\;表示8个数字应为[0-9]\{8\} https://zhidao.baidu.com/question/1115861792946350259.html;^表示开头$表示结尾,不需要加\
手机号正则式:https://blog.csdn.net/voidmain_123/article/details/78962164 同只是参考,不能直接用
awk命令:按行读取。未匹配上的不保留 https://www.cnblogs.com/xudong-bupt/p/3721210.html
sed命令:我自己试出来的。。
awk、sed、grep、fgrep、egrep:
https://www.cnblogs.com/EasonJim/p/8282511.html
https://blog.csdn.net/qq504196282/article/details/52995198
https://www.cnblogs.com/moveofgod/p/3540575.html
同时匹配ABC 和 :
sed -n '/ABC/{/123/p}' awk '/ABC/&&/123/{ print $0 }' grep -E '(ABC.*123|123.*ABC)' 匹配ABC 或 :
sed -n '/\(ABC\|123\)/p' awk '/ABC/||/123/{ print $0 }' grep -E '(ABC|123)' 或 egrep 'ABC|123'
shell awk输出换行print,shell输出不换行printf,连续输出中间用分号
shell正则式解析身份证和手机号的更多相关文章
- Python正则式的基本用法
Python正则式的基本用法 1.1基本规则 1.2重复 1.2.1最小匹配与精确匹配 1.3前向界定与后向界定 1.4组的基本知识 2.re模块的基本函数 2.1使用compile加速 2.2 ma ...
- js正则实现二代身份证号码验证详解
js正则实现二代身份证号码验证详解 根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至 ...
- Python使用re模块正则式的预编译及pickle方案
项目上线要求当中有言论和昵称的过滤需求, 客户端使用的是python脚本, python脚本中直接利用re模块来进行正则匹配, 一开始的做法是开启游戏后, 每帧编译2条正则式, 无奈运营需求里面100 ...
- PHP正则式PCRE
PHP正则式PCRE的总结差不多就下边这些了.参考 PCRE与perl的差异 . 锚(^.$.\A.\Z/\z):^.$在多行模式下是非紧固的,在单行模式下是紧固的:而\A.\Z / \z在任何模 ...
- BUAA-OO-表达式解析与求导
BUAA-OO-表达式解析与求导 解析 按照常规,解析这一部分我们分为词法分析与语法分析.当然由于待解析的字符串较简单,词法分析器和语法分析器不必单独实现. 词法分析器 按照常规,我们先手写一个词法分 ...
- shell正则表达
shell正则表达 .*和.?的比较: 比如说匹配输入串A: 101000000000100 使用 1.*1 将会匹配到1010000000001,匹配方法:先匹配至输入串A的最后, 然后向前匹配,直 ...
- 正则双重过滤 /// splitKey1 第一个正则式匹配 /// splitKey2 匹配结果中再次匹配进行替
/// <summary> /// 正则双重过滤 /// splitKey1 第一个正则式匹配 /// splitKey2 匹配结果中再次匹配进行替换 /// </summary&g ...
- {python}完成完整的温度转换程序 猜数字游戏(猜价格,猜年龄等) 解析身份证号、学号不同片段的含义
完成完整的温度转换程序 while True: a = int(input("如果是华氏转摄氏,请按1\n,如果是摄氏转华氏,请按2\n")) if a==1: h = float ...
- JavaScript正则式练习
使用正则式匹配第一个数字和最后一个数字,使用环视 str2 = 09051 : Fast Food Restaurants - Concession Stands/Snack Bars Delicat ...
随机推荐
- 使用sublime模板加快编码效率
这是使用模板系列的最后一篇了,也是最实用的方法. 前面提到的,插入文件的方法,适合计算机水平一般的初学者:而用TCL脚本的,则适合喜欢自定义各种奇特功能的专业人士. 那么,本次介绍的配置编辑器的方法, ...
- 浅谈iOS 5的StoryBoard
转自:http://blog.163.com/wangy_0223/blog/static/450146612012318113233218/ 示例代码的Github地址:https://github ...
- java的锁池和等待池
谢邀.不知道题中的一段文字出自何处.“锁池”和“等待池”这种翻译我还是头一回见.不过,题主的思路已经对了,即不拘泥于文字,而是在考虑这两个东西在锁的调度(即决定哪个线程可以获得锁的过程)中起到什么作用 ...
- JVM日志和参数的理解
写这篇wiki的目的:最近在调整Hbase的JVM,翻了些文档和wiki,想写点东西,给自己和想了解jvm日志和参数的同 学提供些帮助. 一:理解GC日志格式,读GC日志的方法 1:开启日志 -ver ...
- winform 查看远程服务器上的文件
解决方案: 1. 在目标服务器上发布webservice,实现文件下载的方法. using System; using System.Collections.Generic; using System ...
- winform播放音乐
string sound = Application.StartupPath +@"\song\123.wav"; //Application.StartupPath:程序exe所 ...
- linux2.6内核netfilter架构分析
1.2.6内核的netfilter与2.4的有很大不同: ChangeLog-2.6.15 中有下面这样的描述: commit 9fb9cbb1082d6b31fb45aa1a14432449a0df ...
- 微信小程序1 - 扩展app.js
常规的开发过程中, 每个Page的逻辑中,要使用 util.js WapRequest.js, 需要在每个页面中书写 require('/utils/WapRequest'); 略繁琐 在app. ...
- redis info命令中各个参数的含义
Redis 性能调优相关笔记 2016年09月25日 15:42:04 WenCoding 阅读数:4844更多 个人分类: Redis数据库 info可以使用info [类别]输出指定类别内容i ...
- 海康网络摄像机调用SDK解码Java版
两个回调函数: FRealDataCallBack 实现预览回调数据 DecCallBack 解码回调函数 在HCNetSDK.java补充相关函数和结构声明 //播放库函数声明,PlayCtrl.d ...