免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: router_id
打印 上一主题 下一主题

[系统管理] linux shell 正则匹配 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2018-09-29 11:03 |只看该作者
#先生成你要的类似的字符串
var=`echo "9DFS9fBzGGEa%K5t" | grep -E '.+{16}'`

#分成四组,每组单独做正则匹配,符合的话,再存回每组的变量中,不符合则为空,清空变量
arr1=`echo ${var:0:4}`
arr1=`echo $arr1 | grep -P '\d'`

arr2=`echo ${var:4:4}`
arr2=`echo $arr2 | grep -P '[a-z]'`

arr3=`echo ${var:8:4}`
arr3=`echo $arr3 | grep -P '[A-Z]'`

arr4=`echo ${var:12:4}`
arr4=`echo $arr4 | grep -P '[%*@#]'`

#最后合并,判断是否为16位字符串,如果是,则能够输出$var变量
var=`echo $arr1$arr2$arr3$arr4 | grep -E '.+{16}'`
echo $var

论坛徽章:
0
12 [报告]
发表于 2018-10-04 17:32 |只看该作者
本帖最后由 csccyab 于 2018-10-04 17:41 编辑

Use regex positive lookahead:

echo "9DFS9fBzGGEa%K5t" | grep -P '^(?=.{0,3}\d)(?=.{4,7}[a-z])(?=.{8,11}[A-Z])(?=.{12,15}[\W_]).{16}$'

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
13 [报告]
发表于 2018-10-05 14:13 |只看该作者
#.,; 2018-10-05 14:06:31 1538719591 :!3431!: /i/je-d/sou-d
#.,: echo '1234ASDFasdf&*()' | grep -Po '\d{4}[A-Z]{4}[a-z]{4}\pP{4}'
1234ASDFasdf&*()
#.,; 2018-10-05 14:06:38 1538719598 :!3432!: /i/je-d/sou-d
#.,: echo 'x234ASDFasdf&*()' | grep -Po '\d{4}[A-Z]{4}[a-z]{4}\pP{4}'
#.,; 2018-10-05 14:06:51 1538719611 :!3433!: /i/je-d/sou-d
#.,: echo '1234ASDFasdf&*()' | grep -Po '\d{4}[A-Z]{4}[a-z]{4}\pP{4}'
1234ASDFasdf&*()
#.,; 2018-10-05 14:08:21 1538719701 :!3434!: /i/je-d/sou-d
#.,: echo 'x234ASDFasdf&*()' | grep -Po '\d{4}[A-Z]{4}[a-z]{4}\pP{4}'
#.,; 2018-10-05 14:08:30 1538719710 :!3435!: /i/je-d/sou-d
#.,: echo 'x234ASDFasdf&*()' | grep -Po '\d{4}|.{4}[A-Z]{4}|.{4}[a-z]{4}|.{4}\pP{4}|.{4}'
x234ASDF
asdf&*()
#.,; 2018-10-05 14:09:24 1538719764 :!3436!: /i/je-d/sou-d
#.,: echo '1a' | grep -Po '[0-9]|*{1}[a-z]|*{1}'
grep: nothing to repeat
#.,; 2018-10-05 14:10:39 1538719839 :!3437!: /i/je-d/sou-d
#.,: echo '1a' | grep -Po '[0-9]|.{1}[a-z]|.{1}'
1
a

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
14 [报告]
发表于 2018-10-05 14:14 |只看该作者
回复 1# router_id

#.,; 2018-10-05 14:06:31 1538719591 :!3431!: /i/je-d/sou-d
#.,: echo '1234ASDFasdf&*()' | grep -Po '\d{4}[A-Z]{4}[a-z]{4}\pP{4}'
1234ASDFasdf&*()
#.,; 2018-10-05 14:06:38 1538719598 :!3432!: /i/je-d/sou-d
#.,: echo 'x234ASDFasdf&*()' | grep -Po '\d{4}[A-Z]{4}[a-z]{4}\pP{4}'
#.,; 2018-10-05 14:06:51 1538719611 :!3433!: /i/je-d/sou-d
#.,: echo '1234ASDFasdf&*()' | grep -Po '\d{4}[A-Z]{4}[a-z]{4}\pP{4}'
1234ASDFasdf&*()
#.,; 2018-10-05 14:08:21 1538719701 :!3434!: /i/je-d/sou-d
#.,: echo 'x234ASDFasdf&*()' | grep -Po '\d{4}[A-Z]{4}[a-z]{4}\pP{4}'
#.,; 2018-10-05 14:08:30 1538719710 :!3435!: /i/je-d/sou-d
#.,: echo 'x234ASDFasdf&*()' | grep -Po '\d{4}|.{4}[A-Z]{4}|.{4}[a-z]{4}|.{4}\pP{4}|.{4}'
x234ASDF
asdf&*()
#.,; 2018-10-05 14:09:24 1538719764 :!3436!: /i/je-d/sou-d
#.,: echo '1a' | grep -Po '[0-9]|*{1}[a-z]|*{1}'
grep: nothing to repeat
#.,; 2018-10-05 14:10:39 1538719839 :!3437!: /i/je-d/sou-d
#.,: echo '1a' | grep -Po '[0-9]|.{1}[a-z]|.{1}'
1
a

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
15 [报告]
发表于 2018-10-05 14:18 |只看该作者
本帖最后由 1cpuer 于 2018-10-05 14:46 编辑

#.,; 2018-10-05 14:38:51 1538721531 :!3453!: /i/je-d/sou-d
#.,: echo 'xX34ASDFasdf&*()' | grep -Po '(\d{4}|.{4})([A-Z]{4}|.{4})([a-z]{4}|.{4})(\W{4}|.{4})'
xX34ASDFasdf&*()

论坛徽章:
0
16 [报告]
发表于 2018-10-08 10:44 |只看该作者
本友会机友会摄友会 发表于 2018-09-11 16:06
不用正则这道题写起来很简单。

============================

同意你说的观点,有时候没必要绞尽脑汁非要压缩到一条命令,唯一理由就是节约系统开销,问题是能节约多少呢,我写脚本就是你说的这种狂拆流,拆分每个细节,之后排查问题都很方便,前提是要写好注释,另外,模块细分了也有好处,可以全局调用,如果是单条命令的压缩结构,那脚本里面如果逻辑很多的话,其实更加复杂,每个逻辑都有独立的命令去完成,根本无法做到合理调度;反而显得这个脚本就是一个纯面向过程的“死”脚本;

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
17 [报告]
发表于 2018-10-10 14:29 |只看该作者
回复 1# router_id


  1. cat 1
  2. aaaabbbbccccddd
  3. aaaabbbbccccdddd
  4. aaaabbbbccccdddde
  5. 1aaaBbbbcccc^ddd
  6. aaaabbbbccccdddd

  7. awk -F "" 'function p(x){for(i=++a;i<=a+3;i++){if($i~x){b[a]=1}};a=i-1};length($0)==16{p("[0-9]");p("[A-Z]");p("[a-z]");p("[^0-9a-zA-Z]");if(b[1]&&b[5]&&b[9]&&b[13]){print};a="";delete b}' 1
  8. 1aaaBbbbcccc^ddd
复制代码

论坛徽章:
0
18 [报告]
发表于 2018-10-11 15:30 |只看该作者
回复 11# tfcra

谢谢你!给我新的思路。非常感谢!

论坛徽章:
0
19 [报告]
发表于 2018-10-11 15:54 |只看该作者
回复 15# 1cpuer

谢谢!非常感谢!我好好理解您提供的正则。受教了!
可能还是有点问题,很多不满足条件也匹配上了。
满足条件为下面粗体部分。我测试的原始数据为:
9DFS9fBzGGEa%K5t
q5-(S+$ePLMWO76S
BYd+#SFGZ@OUzXTc
jTJR9LE8(696nGHg
fa586d%OKF%tJc+Q
H!FiB72EK1JHa%x1
Wu1RMG^!pHV3qEj1
q8#TlWYbT%G^q8@i
iMaPM3xOLhQQ0MK1
cRhMz(nbw4KQwnsp
HwI&Dhp8BIfToClP
Vb1EPfdB(rQt7pm^
0)X4v!6lg@63()U1
j#@ki^h@CT#8Nbb5


grep测试结果如下

[root@hsckey c]# cat grep.txt | grep -Po '(\d{4}|.{4})([A-Z]{4}|.{4})([a-z]{4}|.{4})(\W{4}|.{4})'
9DFS9fBzGGEa%K5t
q5-(S+$ePLMWO76S
BYd+#SFGZ@OUzXTc
jTJR9LE8(696nGHg
fa58d%OK6F%tJc+Q
H!FiB72EK1JHa%x1
Wu1RMG^!pHV3qEj1
q8#TlWYbT%G^q8@i
iMaPM3xOLhQQ0MK1
cRhMz(nbw4KQwnsp
HwI&Dhp8BIfToClP
Vb1EPfdB(rQt7pm^
0)X4v!6lg@63()U1
j#@ki^h@CT#8Nbb5


论坛徽章:
0
20 [报告]
发表于 2018-10-11 15:58 |只看该作者
回复 15# 1cpuer

谢谢!非常感谢!我好好理解您提供的正则。受教了!
可能还是有点问题,很多不满足条件也匹配上了。
满足条件为下面粗体部分。我测试的原始数据为:
9DFS9fBzGGEa%K5t
q5-(S+$ePLMWO76S
BYd+#SFGZ@OUzXTc
jTJR9LE8(696nGHg
fa586d%OKF%tJc+Q
H!FiB72EK1JHa%x1
Wu1RMG^!pHV3qEj1
q8#TlWYbT%G^q8@i
iMaPM3xOLhQQ0MK1
cRhMz(nbw4KQwnsp
HwI&Dhp8BIfToClP
Vb1EPfdB(rQt7pm^
0)X4v!6lg@63()U1
j#@ki^h@CT#8Nbb5


grep测试结果如下

[root@hsckey c]# cat grep.txt | grep -Po '(\d{4}|.{4})([A-Z]{4}|.{4})([a-z]{4}|.{4})(\W{4}|.{4})'
9DFS9fBzGGEa%K5t
q5-(S+$ePLMWO76S
BYd+#SFGZ@OUzXTc
jTJR9LE8(696nGHg
fa58d%OK6F%tJc+Q
H!FiB72EK1JHa%x1
Wu1RMG^!pHV3qEj1
q8#TlWYbT%G^q8@i
iMaPM3xOLhQQ0MK1
cRhMz(nbw4KQwnsp
HwI&Dhp8BIfToClP
Vb1EPfdB(rQt7pm^
0)X4v!6lg@63()U1
j#@ki^h@CT#8Nbb5
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP