例如,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/