【发布时间】:2018-04-20 16:36:16
【问题描述】:
我正在尝试对具有employeeID: xxxxxx 编号的任何内容进行模式匹配搜索,并带来所有匹配的条目。但它似乎没有按预期工作。反之亦然,将所有在employeeID 字段中没有数字的条目带入。
我的测试文件
dn: CN=User One,OU=Disabled,OU=People,DC=training,DC=example,DC=
com
userAccountControl: 514
employeeID: user1
comment: HIRED
sAMAccountName: user1
dn: CN=Given-iPad01,OU=Room,DC=training,DC=example,DC=com
userAccountControl: 544
employeeID: Given-iPad01
sAMAccountName: Given-iPad01
lastLogonTimestamp: 130678281934843750
dn: CN=User Two,OU=Admins,DC=training,DC=example,DC=com
userAccountControl: 512
employeeID:: IDE2NzQwODg=
sAMAccountName: user2
lastLogonTimestamp: 131685330348725308
dn: CN=Test User2,OU=2012,OU=People,DC=training,DC=example
,DC=com
userAccountControl: 512
employeeID: testuser2
sAMAccountName: testuser2
lastLogonTimestamp: 131328157284117480
dn: CN=User Three,OU=People,DC=training,DC=example,DC=com
userAccountControl: 512
employeeID: 123456
comment: HIRED
sAMAccountName: user3
lastLogonTimestamp: 131679287880585713
我的预期输出是带上除具有employeeID:testuser 的条目之外的所有条目,但我的结果仅出现在我具有employeeID:123456 的条目中。
以下是我一直在寻找的内容
dn: CN=User One,OU=Disabled,OU=People,DC=training,DC=example,DC=com
userAccountControl: 514
employeeID: user1
comment: HIRED
sAMAccountName: user1
dn: CN=User Two,OU=Admins,DC=training,DC=example,DC=com
userAccountControl: 512
employeeID:: IDE2NzQwODg=
sAMAccountName: user2
lastLogonTimestamp: 131685330348725308
dn: CN=User Three,OU=People,DC=training,DC=example,DC=com
userAccountControl: 512
employeeID: 123456
comment: HIRED
sAMAccountName: user3
lastLogonTimestamp: 131679287880585713
dn: CN=Test User2,OU=2012,OU=People,DC=training,DC=example,DC=com
userAccountControl: 512
employeeID: testuser
sAMAccountName: testuser
lastLogonTimestamp: 131328157284117480
dn: CN=Given-iPad01,OU=Rooms,DC=training,DC=example,DC=com
userAccountControl: 544
employeeID: Given-iPad01
sAMAccountName: Given-iPad01
lastLogonTimestamp: 130678281934843750
以下是我尝试过的:
在employeeID条目的任意位置提取包含数字perl -000 -ne 'print if /employeeID: [0-9]/' testfile
不要在employeeID条目的任何地方提取那些包含数字
perl -000 -ne 'print if !/employeeID: [0-9]/i' testfile
【问题讨论】:
-
这只会查找以数字开头的员工编号。添加
+:[0-9]+或\d+和一个单词边界标记:\d+\b或换行符\d+\n -
看起来您正在粘贴真实的员工数据。如果我是你,我会编辑它。我知道这是从哪里来的,但通常不赞成在互联网上发布这样的真实数据。
-
@Robert 你是这个意思吗? perl -000 -ne '打印 if /employeeID+: [0-9]+/i' 测试文件
-
@0112 这不是真实数据,我的实验室,甚至我在粘贴之前都修改了整个数据。谢谢
-
你说你正在寻找的结果有'testuser'并且看起来和你的输入一样?
标签: perl