awk [参数] ['找谁{干啥}'] 文件
-F 分隔符 -v 创建或修改awk变量 OFS 输出分割符 awk显示每一列的时候分隔
比较表达式
== 等于 >= 大于等于 <= 小于等于 > 大于 < 小于
注:如果列不止数字,想只比较数字的话。可以用+0方法。eg:'$5+0>10'
范围
'NR==1,NR==5' 第1行到第3行 '$3==0,$3==1000' 第3列等于0到第3列等于1000 '/那个字符/,/到那个字符/'
注:不贪婪匹配,但可以匹配多次
特殊
&& 并且 || 或者 BEGIN{} BEGIN 里面的内容会在awk读取文件之前执行 END{} awk读取文件内容之后执END内容
默认 '{print $0}' $0 显示整行 $num 显示第num列 $NF 显示最后一列 $(NF-1) 显示倒数第2列 NR 显示行号 gsub() 条件:gsub(/找谁/,"替换为",哪一列)
注:有两个动作以上,需要用;分割
[root@maintain data]# awk -F':' '{print NR,$0}' /etc/passwd 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 6 sync:x:5:0:sync:/sbin:/bin/sync 7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 8 halt:x:7:0:halt:/sbin:/sbin/halt 9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin 10 operator:x:11:0:operator:/root:/sbin/nologin 11 games:x:12:100:games:/usr/games:/sbin/nologin 12 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin 13 nobody:x:99:99:Nobody:/:/sbin/nologin 14 systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin 15 dbus:x:81:81:System message bus:/:/sbin/nologin 16 polkitd:x:999:998:User for polkitd:/:/sbin/nologin 17 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin 18 postfix:x:89:89::/var/spool/postfix:/sbin/nologin 19 ntp:x:38:38::/etc/ntp:/sbin/nologin
[root@maintain data]# awk -F':' '{print $1,$3,$(NF-1),$NF}' /etc/passwd root 0 /root /bin/bash bin 1 /bin /sbin/nologin daemon 2 /sbin /sbin/nologin adm 3 /var/adm /sbin/nologin lp 4 /var/spool/lpd /sbin/nologin sync 5 /sbin /bin/sync shutdown 6 /sbin /sbin/shutdown halt 7 /sbin /sbin/halt mail 8 /var/spool/mail /sbin/nologin operator 11 /root /sbin/nologin games 12 /usr/games /sbin/nologin ftp 14 /var/ftp /sbin/nologin
[root@maintain data]# awk -F':' '$3>80' /etc/passwd nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin
[root@maintain data]# df | awk '$5+0>10' /dev/sda2 10G 1.4G 8.7G 14% / /dev/sda1 497M 117M 381M 24% /boot
[root@maintain data]# awk '/^$/{i++}END{print i}' /etc/services 17