当键/值是某些值时,如何仅打印某些文本块?

cdm*_*cdm 0 linux bash text-processing

因此,如果我有这样的事情,我只想在“帐户已禁用:错误”时捕获或打印出帐户信息。

$ 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
----------------------------
Run Code Online (Sandbox Code Playgroud)

预期输出为:

  User login: jpeterson
  First name: john
  Last name: peterson
  Home directory: /home/jpeterson
  Login shell: /bin/sh
  UID: 855800007
  GID: 855800007
  Account disabled: False
Run Code Online (Sandbox Code Playgroud)

有多个具有相同键或属性的帐户。

也许我不确定可以为此使用数组。除了尝试之外,我还没有尝试任何其他方法mapfile。当键“ Account disabled”的值等于“ False”时,将文件放入数组并打印出元素。但是我还没有。

wja*_*rea 5

我认为您将对此倒退。ipa应该有一种查询数据库的方法。我自己从未使用过它,但是我找到了包含以下示例的联机帮助页:

ipa user-find foo
Run Code Online (Sandbox Code Playgroud)

搜索在uid,名字,姓氏,全名等中带有“ foo”的所有用户。具有uid“ foobar”的用户将符合搜索条件。

ipa user-find foo --first bar
Run Code Online (Sandbox Code Playgroud)

与上一个示例相同,只是这次用户的名字必须完全是“ 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
Run Code Online (Sandbox Code Playgroud)

也就是说,如果您想走文字处理路线,可以使用awk。

  • 我同意。这是一个xy问题,此外,我将强烈抵制分析专门针对一组人眼的输出的需求。 (2认同)