AWK命令帮助
我如何编写一个awk命令来读取/etc/passwd文件,并只打印出使用/bin/bash程序作为默认命令shell的任何用户的姓名?AWK命令帮助,awk,Awk,我如何编写一个awk命令来读取/etc/passwd文件,并只打印出使用/bin/bash程序作为默认命令shell的任何用户的姓名?awk-F:'/\/bin\/bash$/{print$1}'/etc/passwd,因为这是家庭作业,我不会为您编写程序(希望其他人也不会这么做),但以下是您需要知道的: cat /etc/passwd | awk -F ":" '$7=="/bin/bash" { print $1 }' AWK中的默认字段分隔符为空白;/etc/passwd中的字段分隔符
awk-F:'/\/bin\/bash$/{print$1}'/etc/passwd
,因为这是家庭作业,我不会为您编写程序(希望其他人也不会这么做),但以下是您需要知道的:
cat /etc/passwd | awk -F ":" '$7=="/bin/bash" { print $1 }'
- AWK中的默认字段分隔符为空白;
中的字段分隔符是冒号。您可以通过命令行中的/etc/passwd
变量或FS
更改AWK中的字段分隔符-F
- 在
中,shell列在第7个字段中/etc/passwd/
awk 'BEGIN{FS=":"}$7~/bash/{print $1}' /etc/passwd
上面检查bash,但不限于/bin/bash。如果您确实需要/bin/bash,请更改它
或者告诉你的老师你只想用贝壳
#!/bin/bash
while IFS=":" read -r user b c d e f sh h
do
case "$sh" in
*bash* ) echo $user;;
esac
done <"/etc/passwd"
#/bin/bash
而IFS=“:”读取-r用户b c d e f sh h
做
中的“$sh”格
*bash*)echo$user;;
以撒
完成+1但对cat的无用使用!:-)awk-F:“$7==”/bin/bash“{print$1}”/etc/passwd
So/bin/bash与/tmp/attack/bin/bash相同?很好。和Bear一样,检查整个字段是一种更好的方法。既然您已将分隔符设置为“:”,为什么要检查整行的bash?使用$7@ghostdog74:这正是我在回复罗杰时所指的。我没有编辑我的答案以便与评论保持一致。