免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
楼主: router_id

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

论坛徽章:
0
发表于 2018-10-11 15:59 |显示全部楼层
回复 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
发表于 2018-10-11 16:02 |显示全部楼层
回复 12# csccyab

您好;谢谢!

论坛徽章:
0
发表于 2018-10-11 16:03 |显示全部楼层
回复 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
发表于 2018-10-11 16:05 |显示全部楼层
回复 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
发表于 2018-10-11 16:05 |显示全部楼层
回复 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
发表于 2018-10-11 16:08 |显示全部楼层
回复 17# wh7211

感谢大哥的帮助,非常感谢。经过测试。您提供的方式完全满足我的需求。谢谢!

下面是测试结果
[root@h c]# 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}' grep.txt
9DFS9fBzGGEa%K5t
fa58d%OK6F%tJc+Q
Vb1EPfdB(rQt7pm^


论坛徽章:
0
发表于 2018-10-11 16:08 |显示全部楼层
回复 17# wh7211

感谢大哥的帮助,非常感谢。经过测试。您提供的方式完全满足我的需求。谢谢!
[root@h c]# 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}' grep.txt
9DFS9fBzGGEa%K5t
fa58d%OK6F%tJc+Q
Vb1EPfdB(rQt7pm^

论坛徽章:
0
发表于 2018-10-13 07:31 |显示全部楼层
Python version

pi@raspberrypi:~ $ python passwd-check.py aaaabbbbccccddd
pi@raspberrypi:~ $ python passwd-check.py aaaabbbbccccdddd
pi@raspberrypi:~ $ python passwd-check.py aaaabbbbccccdddde
pi@raspberrypi:~ $ python passwd-check.py 1aaaBbbbcccc^ddd
Password ok
pi@raspberrypi:~ $ python passwd-check.py aaaabbbbccccdddd
pi@raspberrypi:~ $ cat passwd-check.py
#!/usr/bin/python

import sys,re

def check_pattern(pos, pattern, str1):
        for c in str1[pos[0]-1:pos[1]]:
                pattern1 = re.compile(pattern)
                if pattern1.match(c):
                        return True
        return False

if len(sys.argv[1]) == 16:
        if all([check_pattern((1,4), "[0-9]", sys.argv[1]),check_pattern((5,,                                                                         "[A-Z]", sys.argv[1]),check_pattern((9,12), "[a-z]", sys.argv[1]),check_pattern(                                                                        (13,16), "[^a-zA-Z0-9]", sys.argv[1])]):
                print ("assword ok"

论坛徽章:
0
发表于 2018-10-14 07:21 |显示全部楼层
Shorter version

  1. #!/usr/bin/python

  2. import sys,re

  3. pattern = ["[0-9]", "[A-Z]", "[a-z]", "[^0-9A-Za-z]"]

  4. def f(p,s):
  5.    p1 = re.compile(p)
  6.    for c in s:
  7.       if p1.match(c):
  8.          return True
  9.    return False


  10. if len(sys.argv[1]) == 16:
  11.    if all(map (f, pattern,[sys.argv[1][i*4:i*4+4] for i in range(4)])):
  12.       print ("Password ok")
复制代码


论坛徽章:
0
发表于 2018-10-15 17:19 |显示全部楼层
回复 29# csccyab
非常感谢!测试后,密码里面有'('提示报错。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

数据风云,十年变迁
DTCC 第十届中国数据库技术大会已启航!

2019年5月8日~5月10日,由IT168旗下ITPUB企业社区平台主办的第十届中国数据库技术大会(DTCC2019),将在北京隆重召开。大会将邀请百余位行业专家,就热点技术话题进行分享,是广大数据领域从业人士的又一次年度盛会和交流平台。与SACC2018类似,本届大会将采用“3+2”模式:3天传统技术演讲+2天深度主题培训。大会不仅提供超100场的主题演讲,还会提供连续2天的深度课程培训,深化数据领域的项目落地实践方案。
DTCC2019,一场值得期待的数据技术盛会,殷切地希望您报名参与!

活动入口>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP