例如,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
知道我还应该在命令中包含哪些内容以获得我需要的格式......?
谢谢, 萨姆。
答案 0 :(得分:1)
假设你的输入是这样的:
$ 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
。 答案 1 :(得分:0)
您可以在awk中执行此操作:
awk -F, '/cards:/{for(i=2;i<=NF;i++){printf"%s %s@pattern.com\n", $i, $i}}' file
输入:
cat file
cards:x:36082:CARDS,AAA000,BBB111
输出:
AAA000 AAA000@pattern.com
BBB111 BBB111@pattern.com
答案 2 :(得分:-1)
使用grep和awk找到命令...........
grep -i CARDS: /etc/group|awk -F, '/cards:/{for(i=2;i<=NF;i++) print $i,$i"@pattern.com \\"}'
感谢帮助人员。