awk命令

来源:互联网 发布:数据库日志文件太大 编辑:程序博客网 时间:2024/05/01 10:07

 1   cat /etc/passwd | awk -F ":" '{print $1}' 

        这里  -F “:”  是指以:来区分第几列,在/etc/passwd文件中,是以:区分的  ‘{print $1}‘是指执行的操作

        root
        bin
       daemon
       adm

      如果这里不加-F ":" 则会将一整行都打印出来。


  2    awk -F":"'/root/{print $0; print $1 " " $7}'   /etc/passwd

        打印出所有包含root的行,并在第二回打印出用户名和shell类型。$0是打印整行。而不是单独打印一列。多个打印语句在一个{}里,要以分号隔开。

        root:x:0:0:root:/root:/bin/bash
        root /bin/bash
        operator:x:11:0:operator:/root:/sbin/nologin
        operator /sbin/nologin

3      awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本。

        ps -ef | grep nginx | awk '{print $7}'      选取nginx进程的第七列

  

ps -ef 显示出的结果:
     1.UID       用户ID
     2.PID        进程ID
     3.PPID      父进程ID
     4.C           CPU占用率
     5.STIME     开始时间
     6.TTY         开始此进程的TTY----终端设备
     7.TIME       此进程运行的总时间
     8.CMD       命令名

 4      awk工作流程是这样的:先执行BEGING

                                             然后读取文件,读入有/n换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域,随后开始执行模式所对应的动作action。接着开始读入第二条记录······直到所有的记录都读完

                                            最后执行END操作。

        ps -ef | grep nginx | awk 'BEGIN {print "UID,PPID"} {print $1 " " $3 };END{print "END"}'