Linux 我需要在密码文件中找到一个确切的单词,但我得到了两个回复

Linux 我需要在密码文件中找到一个确切的单词,但我得到了两个回复,linux,shell,grep,ksh,etcpasswd,awk,Linux,Shell,Grep,Ksh,Etcpasswd,Awk,我正在使用grep解析密码文件 当我使用 grep -w "avahi" /etc/passwd 我得到两个回复 avahi和avahi autoipd 我还没有找到一种方法给我唯一的回应 此命令是较大脚本的一部分,其中名称(avahi)实际上是一个变量 当名称为rpc和rpcuser时,此功能确实有效。所以我猜它和名字中的破折号(-)有关 实际代码: #!/bin/ksh getent shadow |cut -d: -f1-2|grep ':!!'| cut -d: -f1 > /t

我正在使用grep解析密码文件

当我使用

grep -w "avahi" /etc/passwd
我得到两个回复
avahi
avahi autoipd

我还没有找到一种方法给我唯一的回应

此命令是较大脚本的一部分,其中名称(
avahi
)实际上是一个变量

当名称为
rpc
rpcuser
时,此功能确实有效。所以我猜它和名字中的破折号(
-
)有关

实际代码:

#!/bin/ksh
getent shadow |cut -d: -f1-2|grep ':!!'| cut -d: -f1 > /tmp/pasck
while read line
do 
   NOLOGIN=`grep -w $line /etc/passwd | cut -d -f7|cut -d/ -f3`
if [[ $NOLOGIN != "nologin: && $NOLOGIN != "false" ]] ; then
echo "$line" "$NOLOGIN" >> /tmp/pasck.list
fi
done <?tmp/pasck
#/bin/ksh
格登特阴影|切割-d:-f1-2 |格雷普:!!|切割-d:-f1>/tmp/pasck
读行时
做
NOLOGIN=`grep-w$line/etc/passwd | cut-d-f7 | cut-d/-f3`
如果[[$NOLOGIN!=“NOLOGIN:&&&$NOLOGIN!=“false”];则
echo“$line”“$NOLOGIN”>>/tmp/pasck.list
fi

完成保持简单-您可以在
grep
语句中包含用户名后面的冒号:

$ grep "^avahi:" /etc/passwd

保持简单-您可以在
grep
语句中包含用户名后面的冒号:

$ grep "^avahi:" /etc/passwd
您可以使用并显式测试第一个冒号分隔字段:

awk-F:'$1=“avahi”'/etc/passwd
您可以使用并显式测试第一个冒号分隔字段:


awk-F:'$1=“avahi”'/etc/passwd

谢谢。我总是喜欢简单。谢谢。我总是喜欢简单。