如何编写读取/ etc / passwd文件的awk命令,并打印出只有/ bin / bash程序作为默认命令shell的任何用户的名称?
答案 0 :(得分:4)
cat /etc/passwd | awk -F ":" '$7=="/bin/bash" { print $1 }'
答案 1 :(得分:3)
由于这是作业,我不会为你编写程序(希望其他人也没有),但这是你需要知道的:
AWK中的默认字段分隔符是空格; /etc/passwd
中的字段分隔符是冒号。您可以通过FS
变量或命令行中的-F
更改AWK中的字段分隔符。
在/etc/passwd/
中,shell列在第7个字段中。
好吧,在我写这么多的时候,有两个人为你完成了你的功课。祝你好运!
答案 2 :(得分:1)
awk -F: '/\/bin\/bash$/{print $1}' /etc/passwd
答案 3 :(得分:0)
@OP,你可以使用awk
awk 'BEGIN{FS=":"}$7~/bash/{print $1}' /etc/passwd
以上检查bash,但不限于/ bin / bash。如果您确实需要/ bin / bash,请更改它。
或者告诉你的老师你只想使用shell
#!/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"