AWK命令帮助

时间:2010-01-26 19:28:52

标签: awk

如何编写读取/ etc / passwd文件的awk命令,并打印出只有/ bin / bash程序作为默认命令shell的任何用户的名称?

4 个答案:

答案 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"