awk处理筛选内容

我们NIS服务器上很多帐号无效之后只删除了passwd文件里的帐号名,group文件没有修改,导致现在很多不存在的IDgroup里面加入了很多组。现在要把这些无效IDgroup文件移除,请问有什么好办法

 

举例:

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

 

现在如何把不存在的帐号dddeee删除呢 ?

处理办法:

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

这种处理方法:需要注意的是 如果在处理文本的过程中需要有多个或者一个的情况,这时候三元表达式是比较好的处理方式。     

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xuejinliang/article/details/52367756
个人分类: awk
上一篇指定行合并为一行
下一篇awk行赋值处理
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭