如何获取特定组的用户列表,其中包含来自应用程序的所有组的列表

问题描述 投票:0回答:1

我想使用我的应用程序中的数据,通过将输出管道传输到

xargs -l -i myapp notification:generate {} "System maintenance today starting at 4 PM"

向特定组的用户发送通知

我的应用程序可以导出用户组列表,格式如下:

  - IT Systems Dep:
    - user1
    - user2
  - Medicine Dep:
    - user3
    - user4
    - user1

但是,该应用程序无法导出特定组的用户。如何使用 sed 或 awk 获取特定组的用户列表,例如在 sed/awk/grep 的帮助下?因此,我在选项中提供特定组(或多个组)的名称并获取用户的简单列表,例如“Medicine Dep”的情况:

user3
user4
user1

谢谢!

awk sed formatting
1个回答
0
投票

在人工智能、自己的大脑和实验的帮助下,我发现了两种情况: (1)awk:

awk -v target_group="groupname" '
  /^  - / {
    in_target_group = ($0 ~ "^  - " target_group)
  }
  in_target_group && /^    - / {
    print $2
  }
'

(2) sed

sed -n '/^  - IT Systems Dep.$/,/^  - [^-]/{/^    - /{s/^    - //p}; /^  - /d}'

或改进的 sed

sed -En '/^[[:space:]]*-[[:space:]]IT Systems Dep.$/,/^[[:space:]]{2}-[[:space:]][^-]/{/^[[:space:]]*-[[:space:]]/{s/^[[:space:]]{4}-[[:space:]]//p}; /^[[:space:]]*-[[:space:]]/d}' user_groups.txt
© www.soinside.com 2019 - 2024. All rights reserved.