这个比较棘手:我有一个包含多个用户DN的文本文件,每个DN下面都有一个带有LogonHours模式的矩阵(使用PowerShell从Active Directory中提取)。看起来像这样:
CN=John Doe,OU=Users,OU=Almox,DC=acme,DC=inc
Day
of --------- Daily Hours --------
Week M-3 3-6 6-9 9-N N-3 3-6 6-9 9-M
Dom 000 000 000 000 000 000 000 000
Seg 000 000 011 111 111 111 100 000
Ter 000 000 011 111 111 111 100 000
Qua 000 000 011 111 111 111 100 000
Qui 000 000 011 111 111 111 100 000
Sex 000 000 011 111 111 111 100 000
Sab 000 000 000 000 000 000 000 000
CN=Jack Dumb,OU=Users,OU=Managers,DC=acme,DC=inc
All Hours
CN=Barry Foo,OU=Disabled Users,DC=acme,DC=inc
Day
of --------- Daily Hours --------
Week M-3 3-6 6-9 9-N N-3 3-6 6-9 9-M
Dom 000 000 000 000 000 011 111 111
Seg 111 111 111 111 111 111 111 111
Ter 111 111 111 111 111 111 111 111
Qua 111 111 111 111 111 111 111 111
Qui 111 111 111 111 111 111 111 111
Sex 111 111 111 111 111 111 111 111
Sab 111 111 111 111 110 000 000 000
如何使用AWK提取具有特定LogonHours模式的用户名?
我能够使用AWK来计算特定模式的数量,使用“模式文件”作为RS,如下所示:
awk -v RS="$(<patternfile.txt)" '{print RT}' logonhoursCNlist.txt | grep "Week M-3" | wc -l
使用具有以下内容的模式文件的预期结果...
Day
of --------- Daily Hours --------
Week M-3 3-6 6-9 9-N N-3 3-6 6-9 9-M
Dom 000 000 000 000 000 000 000 000
Seg 000 000 011 111 111 111 100 000
Ter 000 000 011 111 111 111 100 000
Qua 000 000 011 111 111 111 100 000
Qui 000 000 011 111 111 111 100 000
Sex 000 000 011 111 111 111 100 000
Sab 000 000 000 000 000 000 000 000
..。只是CNs上的用户名,如下所示:
John Doe
如有任何帮助,我将不胜感激!
发布于 2016-08-12 22:41:13
它应该是这样的(未经测试,但如果不完全是您想要的,它将非常接近):
awk -v RS="$(<patternfile.txt)" 'RT!=""{print gensub(/.*CN=([^,]+).*/,"\\1",1)}' logonhoursCNlist.txt
上面将GNU awk用于多字符RS和gensub()。
https://stackoverflow.com/questions/38917510
复制相似问题