-F选项的做用是指定分隔符。若是不加-F选项,则以空格或者tab为分隔符。print为打印操做,用来打印某个字段。$1为第1个字段,$2为第2个字段,以此类推。可是$0比较特殊,它表示整行:centos
[root@centos01 test_awk_dir]# head -n 5 test.txt root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin [root@centos01 test_awk_dir]# head -n 5 test.txt |awk -F ':' '{print $1}' root bin daemon adm lp [root@centos01 test_awk_dir]# head -n 5 test.txt |awk -F ':' '{print $0}' root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
awk的格式说明: -F后面紧跟单引号,单引号里面为分隔符。print操做要用{}括起来,不然会报错。print还能够打印自定义内容,可是自定义的内容要用双引号括起来:bash
[root@centos01 test_awk_dir]# head -n 5 test.txt |awk -F ':' '{print $1,$2,$3}' root x 0 bin x 1 daemon x 2 adm x 3 lp x 4 [root@centos01 test_awk_dir]# head -n 5 test.txt |awk -F ':' '{print $1"@"$2"@"$3}' root@x@0 bin@x@1 daemon@x@2 adm@x@3 lp@x@4
匹配字符串ssh
[root@centos01 test_awk_dir]# awk '/root/' test.txt root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
指定某个段进行匹配,~就是匹配的意思。还能够屡次匹配post
[root@centos01 test_awk_dir]# awk -F ':' '$1~/root/' test.txt root:x:0:0:root:/root:/bin/bash # 输出两条同样的是由于这一天同时知足root和operator匹配 [root@centos01 test_awk_dir]# awk -F ':' '/root/ {print $0} /operator/ {print $0}' test.txt root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin
| 匹配串知足其一便可code
[root@centos01 test_awk_dir]# awk -F ':' '/root|operator/ {print $0}' test.txt root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
awk条件操做符ip
[root@centos01 test_awk_dir]# awk -F ':' '$3==0' test.txt root:x:0:0:root:/root:/bin/bash [root@centos01 test_awk_dir]# awk -F ':' '$3==0 {print $0}' test.txt root:x:0:0:root:/root:/bin/bash [root@centos01 test_awk_dir]# awk -F ':' '$7=="/sbin/nologin" {print $0}' test.txt bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin [root@centos01 test_awk_dir]# awk -F ':' '$7!="/sbin/nologin" {print $0}' test.txt root:x:0:0:root:/root:/bin/bash sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt snowball:x:1000:1000::/home/snowball:/bin/bash test01:x:1001:1001::/home/test01:/bin/bash test02:x:1002:1002::/home/test02:/bin/bash test03:x:1003:1004::/home/test03:/bin/bash test06:x:1004:1005::/home/test06:/bin/bash test07:x:1005:1006::/home/test07:/bin/bash test08:x:1006:1007::/home/test08:/bin/bash [root@centos01 test_awk_dir]# awk -F ':' '$3<$4' test.txt adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin test03:x:1003:1004::/home/test03:/bin/bash test06:x:1004:1005::/home/test06:/bin/bash test07:x:1005:1006::/home/test07:/bin/bash test08:x:1006:1007::/home/test08:/bin/bash [root@centos01 test_awk_dir]# awk -F ':' '{if ($3<$4) {print $0}}' test.txt adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin test03:x:1003:1004::/home/test03:/bin/bash test06:x:1004:1005::/home/test06:/bin/bash test07:x:1005:1006::/home/test07:/bin/bash test08:x:1006:1007::/home/test08:/bin/bash [root@centos01 test_awk_dir]# awk -F ':' '$3<7 || $7 ~ /bash/' test.txt root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown snowball:x:1000:1000::/home/snowball:/bin/bash test01:x:1001:1001::/home/test01:/bin/bash test02:x:1002:1002::/home/test02:/bin/bash test03:x:1003:1004::/home/test03:/bin/bash test06:x:1004:1005::/home/test06:/bin/bash test07:x:1005:1006::/home/test07:/bin/bash test08:x:1006:1007::/home/test08:/bin/bash
awk 经常使用的内置变量有OFS、NF和NR,其中OFS和-F选项有相似的功能,也是用来定义分隔符的,可是它是在输出的时候定义,NF表示用分隔符分隔后一共有多少段,NR表示行号字符串
[root@centos01 test_awk_dir]# head -n 5 test.txt |awk -F ':' '{OFS="@"} {print $1,$2,$3}' root@x@0 bin@x@1 daemon@x@2 adm@x@3 lp@x@4 [root@centos01 test_awk_dir]# head -n 5 test.txt |awk -F ':' '{print NR"#"$0}' 1#root:x:0:0:root:/root:/bin/bash 2#bin:x:1:1:bin:/bin:/sbin/nologin 3#daemon:x:2:2:daemon:/sbin:/sbin/nologin 4#adm:x:3:4:adm:/var/adm:/sbin/nologin 5#lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin [root@centos01 test_awk_dir]# head -n 5 test.txt |awk -F ':' '{print NF"#"$0}' 5#0:0:root:/root:/bin/bash 7#bin:x:1:1:bin:/bin:/sbin/nologin 7#daemon:x:2:2:daemon:/sbin:/sbin/nologin 7#adm:x:3:4:adm:/var/adm:/sbin/nologin 7#lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin [root@centos01 test_awk_dir]# awk -F ':' 'NR<=10' test.txt #输出前10行 0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin [root@centos01 test_awk_dir]# awk -F ':' 'NR<=10 && $1 ~ /sync/' test.txt sync:x:5:0:sync:/sbin:/bin/sync [root@centos01 test_awk_dir]# head -n 3 test.txt 0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin [root@centos01 test_awk_dir]# [root@centos01 test_awk_dir]# head -n 3 test.txt | awk -F ':' '$1="root"' root 0 root /root /bin/bash root x 1 1 bin /bin /sbin/nologin root x 2 2 daemon /sbin /sbin/nologin
awk进行数学运算数学
[root@centos01 test_awk_dir]# tail -n 3 test.txt test06:x:1004:1005::/home/test06:/bin/bash test07:x:1005:1006::/home/test07:/bin/bash test08:x:1006:1007::/home/test08:/bin/bash [root@centos01 test_awk_dir]# tail -n 3 test.txt | awk -F ':' '{(total=total+$3)}; END {print total}' 3015