grep输出命令并显示与字符串匹配的所有行

时间:2016-02-11 20:25:47

标签: linux bash grep ldap freeipa

我正在尝试从命令中显示所有已禁用的帐户:

bytes

命令的基本输出显示如下:

ipa user-find --all

如果我跑:

dn: uid=johnd,cn=users,cn=accounts,dc=mydomain,dc=com
User login: johnd
First Name: John
Last Name: Doe
Full Name: John Doe
Home directory: /home/johnd
GECOS field: John Doe
Login shell: /bin/bash
Kerberos principal: johnd@DOMAIN.COM
Email address: johnd@domain.com
UID: 501
GID: 1022
Account disabled: True
Password: True
Member of groups: ipausers
Kerberos keys available: False
ipauniqueid: 75732ha-482x82l-13xa-d820-0120xbba142
objectclass: ipaobject, krbticketpolicyaux, etc.

我会得到:

ipa user-find --all | grep "Account disabled: True"

适用于所有已停用的帐户。有没有办法让它显示匹配 Account disabled: True Account disabled: True Account disabled: True Account disabled: True 的所有字段?

2 个答案:

答案 0 :(得分:2)

一个不依赖于所有属性的顺序和/或存在的awk解决方案[并且鉴于我对ldif的了解我会安全地假设DN:总是在第一行]:

awk 'BEGIN{RS="\n\n";FS="\n"}/Account disabled: True/{print $1}'

答案 1 :(得分:1)

ipa-user-find --all | grep "Account disabled: True" -B12 -A5

-B之前是多少行,而-A之前是多少行。这可能是一个更优雅的解决方案,但现在可行。

如果您只想要每个已禁用帐户的全名,只需将结果传递给另一个grep命令