Bash 检查用户是否存在,如果存在则将数字添加到用户名
Bash check if user exists, if so add number to the username
如果用户名存在,我必须将数字 2 添加到该用户名,如果该用户名也存在,我必须将数字 3 添加到它,依此类推...
(因此,如果 John 存在,程序必须添加 John2,如果他也存在,则必须添加 John3 等。)当然,我添加的每个用户都会被记住。
在 bash 中最短和最简单的方法是什么?
假设users.txt
是:
joe
jimmy
foo
jimmy
bar
jimmy
那你就可以用awk了
awk 'cnt[[=11=]]++{[=11=]=[=11=] cnt[[=11=]]-1} 1' users.txt
生成输出:
joe
jimmy
foo
jimmy1
bar
jimmy2
一些有用的部分:
for n in "" {9..11}; do egrep -q "^stefan${n}\b" /etc/passwd && echo "name${n} " || echo "unknown name${n}"; done
name
unknown name9
unknown name10
unknown name11
遍历数字,查找(可能生成的)用户名,已知或未知的反应不同,粘合名称和数字。
如果用户名存在,我必须将数字 2 添加到该用户名,如果该用户名也存在,我必须将数字 3 添加到它,依此类推... (因此,如果 John 存在,程序必须添加 John2,如果他也存在,则必须添加 John3 等。)当然,我添加的每个用户都会被记住。
在 bash 中最短和最简单的方法是什么?
假设users.txt
是:
joe
jimmy
foo
jimmy
bar
jimmy
那你就可以用awk了
awk 'cnt[[=11=]]++{[=11=]=[=11=] cnt[[=11=]]-1} 1' users.txt
生成输出:
joe
jimmy
foo
jimmy1
bar
jimmy2
一些有用的部分:
for n in "" {9..11}; do egrep -q "^stefan${n}\b" /etc/passwd && echo "name${n} " || echo "unknown name${n}"; done
name
unknown name9
unknown name10
unknown name11
遍历数字,查找(可能生成的)用户名,已知或未知的反应不同,粘合名称和数字。