一种简单的方法是使用用户名作为索引维护一个数组,并在每次读取用户时递增它,例如
awk '{ print (($1 in a) ? $1 a[$1] : $1) "@email.com"; a[$1]++ }' file
The ternary (($1 in a) ? $1 a[$1] : $1)
只是检查用户是否在a[]
但是,如果是这样,则使用名称加上数组的值$1 a[$1]
如果用户不在数组中,那么它只使用用户$1
。三元的结果与"@email.com"
来完成输出。
最后,用户的数组元素的值递增,a[$1]++
.
使用/输出示例
将你的名字放在一个名为的文件中users
你将会拥有:
$ awk '{ print (($1 in a) ? $1 a[$1] : $1) "@email.com"; a[$1]++ }' users
[email protected] /cdn-cgi/l/email-protection
[email protected] /cdn-cgi/l/email-protection
[email protected] /cdn-cgi/l/email-protection
[email protected] /cdn-cgi/l/email-protection
[email protected] /cdn-cgi/l/email-protection
[email protected] /cdn-cgi/l/email-protection
[email protected] /cdn-cgi/l/email-protection
将电子邮件保留在输入文件中
如果您的输入已在用户名末尾包含电子邮件,那么您只需输出该记录并跳到下一条记录,例如
awk '$1~/@/{print; next} { print (($1 in a) ? $1 a[$1] : $1) "@email.com"; a[$1]++ }' users
这将保留[email protected] /cdn-cgi/l/email-protection
从你的评论中。
输入示例
jsmith
jsmith
kgonzales
shouston
[email protected] /cdn-cgi/l/email-protection
dgenesy
kgonzales
jsmith
示例输出
[email protected] /cdn-cgi/l/email-protection
[email protected] /cdn-cgi/l/email-protection
[email protected] /cdn-cgi/l/email-protection
[email protected] /cdn-cgi/l/email-protection
[email protected] /cdn-cgi/l/email-protection
[email protected] /cdn-cgi/l/email-protection
[email protected] /cdn-cgi/l/email-protection
[email protected] /cdn-cgi/l/email-protection