红联Linux门户
Linux帮助

一个查询命令的过滤语句,谁给我解释解释?谢谢

发布时间:2010-03-02 10:15:54来源:红联作者:goodfans
刚看到的这个命令,但是那么多个参数不知道什么意思,哪位高人帮我详细解释一下?谢谢

Linux下,所有用户的信息都被存在一个叫做/etc/passwd 的文件里,所以要看用户列表可以自己写语句到这里去过滤查看,以下是我最近刚写的一个过滤语句。

  cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'|more
文章评论

共有 6 条评论

  1. 刘冲 于 2010-03-02 17:30:19发表:

    就是,cat输出的数据依次通过三个grep过滤,然后使用awk处理,再用more查看结果.
    grep的看看help文档,awk的比较麻烦,看下相关学习资料吧.
    有本书叫"UNIX shell范例精解(第4版)"很不错,你买或者下载个看看.
    下载的话,这里有个:http://www.verycd.com/topics/2765325/

  2. mengjie213 于 2010-03-02 13:19:00发表:

    客气。共同学习哈!

  3. goodfans 于 2010-03-02 13:16:55发表:

    谢谢,受教了!

  4. mengjie213 于 2010-03-02 13:02:46发表:

    #grep --help
    你会看到 -v 的意思 -v, --invert-match select non-matching lines
    就是不匹配的,,,就是说不含有这些词的行才是需要的 nologin halt shutdown
    awk -F":" '{ print $1"|"$3"|"$4 }' 这个条件是说之显示 满足之前条件行的 一“:” 为分割的第1 ,3,4列。

  5. mengjie213 于 2010-03-02 12:51:25发表:

    cat 查看文件 /etc/passwd ,“|”是管道, “|”之前的语句的输出作为之后的语句的输入。这样一层一层的 grep 过滤,最后筛选出你要的结果。 然后awk -F":" '{ print $1"|"$3"|"$4 } 只显示相应的列,最后more 一下,会分屏显示(输出很多时有用)。

  6. mengjie213 于 2010-03-02 12:45:57发表:

    你要是想学,可以这样分别执行:
    cat /etc/passwd
    cat /etc/passwd|grep -v nologin
    cat /etc/passwd|grep -v nologin|grep -v halt
    cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown
    cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'