我们NIS服务器上很多帐号无效之后只删除了passwd文件里的帐号名,group文件没有修改,导致现在很多不存在的ID在group里面加入了很多组。现在要把这些无效ID从group文件移除,请问有什么好办法
举例:
passwd:
aaa:59029:59029::/local/aaa:/bin/bash
bbb:59030:59030::/local/bbb:/bin/bash
ccc:59031:59031::/local/ccc:/bin/bash
group:
group1::341:aaa,bbb
group2::341:ccc,ddd
group3::341:bbb,eee
现在如何把不存在的帐号ddd,eee删除呢 ?
处理办法:
awk -F':' 'NR==FNR{a[$1]=1;next}{t=split($NF,b,",");g="";for(i=1;i<=t;i++)if(a[b[i]]){g=g?g","b[i]:b[i];$NF=g}}1' passwd group
这种处理方法:需要注意的是 如果在处理文本的过程中需要有多个或者一个的情况,这时候三元表达式是比较好的处理方式。