linux - 我正在尝试按照以下模式获取组下的用户列表

标签 linux perl unix ksh

例如,AAA000 和 BBB111 是 CARDS 组下的用户....我正在尝试获取以下格式的输出。

AAA000 AAA000@pattern.com \
BBB111 BBB111@pattern.com \

我试过 grep -i CARDS:/etc/group | sed 's/$/,/' | sed 's/,/@capitalone.com\n/g' 这给了我

cards:x:36082:CARDS@pattern.com
AAA000@pattern.com
BBB111@pattern.com

知道我还应该在命令中包含什么以进入我需要的格式吗...?

谢谢, 山姆。

最佳答案

假设你的输入是这样的:

$ cat file
cards:x:36082:CARDS,AAA000,BBB111

你可以这样做:

$ perl -F, -lane 'if(/cards:/){print "$_ $_\@pattern.com" for (@F[1..$#F])}' file
AAA000 AAA000@pattern.com
BBB111 BBB111@pattern.com
  • 我们使用,作为字段分隔符(由-F,定义)。
  • 使用 -a 选项将我们在 , 上的整行拆分到一个由 @F 定义的数组中。
  • 我们通过 if(/cards:/) 测试当前行是否是您要解析的行。
  • 如果是,我们从第二个索引 (@F[1..$#F]) 开始打印数组的每个元素,直到最后一个。这是因为我们的第一个索引将具有您不需要的值 cards:x:36082:CARDS

关于linux - 我正在尝试按照以下模式获取组下的用户列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22845305/

相关文章:

Linux 在 linux 上配置 web 服务器端口

perl - 默认情况下 Perl 中的任何 sumfunc

regex - 尝试使用 perl 进行替换

c - 如何在 C 中格式化表格

linux - 如何在一列中添加数字并将总计插入不同的列

linux - 10G Linux VPN 性能

linux - 为什么我在 Linux 中使用带有 GFP_DMA 的 kmalloc 时得到高地址?

linux - Perl 在文件中搜索和替换错误 "Bareword found where operator expected"

regex - 如何使用 diff 排除多行模式?

unix - 使用命令行从以上目录中选择Gradle构建文件