因此,如果我有这样的事情,我只想在“帐户已禁用:False”时捕获或打印出帐户信息。
$ ipa user-find
---------------
2 users matched
---------------
User login: jpeterson
First name: john
Last name: peterson
Home directory: /home/jpeterson
Login shell: /bin/sh
UID: 855800007
GID: 855800007
Account disabled: False
User login: jsmith
First name: john
Last name: smith
Home directory: /home/jsmith
Login shell: /bin/sh
UID: 855800004
GID: 855800004
Account disabled: True
----------------------------
Number of entries returned 2
----------------------------
预期的输出将是:
User login: jpeterson
First name: john
Last name: peterson
Home directory: /home/jpeterson
Login shell: /bin/sh
UID: 855800007
GID: 855800007
Account disabled: False
有多个具有相同键或属性的帐户。
也许我不能为此使用数组,只是不确定。除了尝试mapfile
之外,我还没有尝试任何其他方法。当键“ Account disabled”的值等于“ False”时,将文件放入数组并打印出元素。但是我还没有。
我认为您正在对此进行倒退。 ipa
应该有一种查询数据库的方法。我自己从未使用过它,但在以下示例中发现了a manpage:
ipa user-find foo
搜索所有在uid,名字,姓氏,全名等中带有“ foo”的用户。具有uid为“ foobar”的用户将符合搜索条件。
ipa user-find foo --first bar
与前面的示例相同,除了这次用户的名字必须完全是“ bar”。 uid为“ foobar”且名字为“ bar”的用户将符合搜索条件。
要获取更多详细信息,请尝试ipa help user-find
。
您想要的命令可能看起来像其中之一:
ipa user-find --disabled False # Update: this one worked for OP
ipa user-find --account-disabled False
ipa user-find --enabled True
也就是说,如果您想使用文本处理路线,请you could use awk
。
这是一个简单的awk
脚本:
awk
length() == 1 || /^--*/ { # if section boundery marker
if (found == 1) print rec; # print current rec only on found marker
found = 0; # reset found marker
rec = ""; # reset rec
next; # read next line
}
/Account disabled: True/ {found = 1;} # if on disabled account, set found marker
{rec = rec $0 ORS} # accumulate current line into rec
awk -f script.awk input.txt