尴尬:在包括原始的第三个字段中查找重复项



我找出了以下代码以在PassWD文件中查找重复的UID,但它不包括第一个实例(后来重复的一个实例),我最终想拥有一个用UID = [ USER1, USER2 ]的字典,但我不确定如何在尴尬中完成。

到目前为止我拥有的东西:

awk -F':' '$1 !~ /^#/ &&  _[$3]++ {print}' /etc/passwd  

说明(据我了解),如果Regex匹配一条不以注释'#开始的行,则根据当前行UID值递增数组,这使该行变为非零/真实值,从而打印它。

这可能会帮助您做到这一点。首先,我们将数据保存在数组中,最后{}块我们在数组中打印所有重复的行(在执行时间也有打印)。希望它能帮助您

awk -F":" '
    $1 !~ /^#/ && (counter[$3]>0) {a++;print "REPEATED|UID:"$3"|"$0"|"LastReaded[$3]; repeateds["a"a]=$0; repeateds["b"a]=LastReaded[$3]}
    $1 !~ /^#/ { counter[$3]++; LastReaded[$3]=$0} 
    END {for (i in repeateds)
         {
            print i"|"repeateds[i]
         }
    }
' /etc/passwd  
REPEATED|UID:229|pepito:*:229:229:pepito:/var/empty:/usr/bin/false|_avbdeviced:*:229:-2:Ethernet AVB Device Daemon:/var/empty:/usr/bin/false
a1|pepito:*:229:229:pepito:/var/empty:/usr/bin/false
b1|_avbdeviced:*:229:-2:Ethernet AVB Device Daemon:/var/empty:/usr/bin/false

最新更新