【问题标题】:grep output of command and display all lines that match a stringgrep 命令的输出并显示与字符串匹配的所有行
【发布时间】:2016-02-11 20:25:46
【问题描述】:

我正在尝试通过命令显示所有禁用的帐户:

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

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

【问题讨论】:

    标签: linux bash grep ldap freeipa


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:
      ipa-user-find --all | grep "Account disabled: True" -B12 -A5
      

      -B 是前几行,-A 是后几行。可能有一个更优雅的解决方案,但现在可行。

      如果您只需要每个禁用帐户的全名,只需将结果通过管道传送到另一个 grep 命令

      【讨论】:

      • 谢谢。这样就可以了。
      猜你喜欢
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-07
      • 1970-01-01
      • 2011-04-23
      • 1970-01-01
      相关资源
      最近更新 更多