匹配15或18位身份证号(支持带x的)
grep '^[1-9]\([0-9]\{13\}\|[0-9]\{16\}\)[0-9xX]$' a.txt

匹配15位或18位身份证号(支持带x的)
grep '^[1-9]\([0-9]\{13\}\|[0-9]\{16\}\)[0-9xX]' qq.txt

匹配4-10位的qq号码:
grep '^[0-9]\{4,10\}$' qq.txt
\w 匹配 数字 字母 下划线
分析正则表达式时 需要先把没有意义的很多反斜线去掉 再来分析就容易一些
这里的"13次或16次"是通过{13}|{16}实现的
Linux的正则表达式与Python的略有不同。
Linux下以下每个符号前面不加\表示常字符,Python不然
+?(){}|
四到十位的qq号 ^[0-9]\{4-10\}$
15到18位数的身份证号码(支持带x) ^[1-9]\([0-9]\{13\}\|[0-9]\{16\}\)[0-9xX]$
包含数字,字母,下划线的密码 '^\w\+$'