标签:games mux back else ane sync lines type pre
awk 3元表达式,if...else结构都可以用3元表达式改写
ghostwu@dev:~/linux/awk$ awk -v FS=":" ‘{ type=$3>=1000?"普通用户":"系统用户";print $1,type}‘ /etc/passwd root 系统用户 daemon 系统用户 bin 系统用户 sys 系统用户 sync 系统用户 games 系统用户 man 系统用户 lp 系统用户 mail 系统用户 news 系统用户 uucp 系统用户 proxy 系统用户 www-data 系统用户 backup 系统用户 list 系统用户 irc 系统用户 gnats 系统用户 nobody 普通用户 systemd-timesync 系统用户 systemd-network 系统用户 systemd-resolve 系统用户 systemd-bus-proxy 系统用户 syslog 系统用户 _apt 系统用户 messagebus 系统用户 uuidd 系统用户 lightdm 系统用户 whoopsie 系统用户 avahi-autoipd 系统用户 avahi 系统用户 dnsmasq 系统用户 colord 系统用户 speech-dispatcher 系统用户 hplip 系统用户 kernoops 系统用户 pulse 系统用户 rtkit 系统用户 saned 系统用户 usbmux 系统用户 ghostwu 普通用户 mysql 系统用户 guest-iilhaz 系统用户 smmta 系统用户 smmsp 系统用户
统计普通用户与系统用户的个数
ghostwu@dev:~/linux/awk$ awk -v FS=":" ‘{$3>=1000 ? user++ : snumber++} END{print "user number:", user, "system number:", snumber}‘ /etc/passwd user number: 2 system number: 42
awk打印奇偶行
1、在awk中,如果省略了模式对应的动作,当前行满足模式时,默认动作为打印整行,即{print $0}
2、在awk中,0或者空字符串表示"假",非0值或者非空字符串表示"真",当模式为假,动作不会执行,当模式为真,动作会执行
ghostwu@dev:~/linux/awk$ awk ‘i=!i‘ lines.txt 第 1 行 第 3 行 第 5 行 第 7 行 第 9 行 第 11 行
awk扫描第一行时,i变量被初始化为空值, 取反之后 变为真, 整个模式就为真,所以打印第一行, 第二行的时候,取反赋值变为假。。。。以此类推
ghostwu@dev:~/linux/awk$ awk ‘{i=!i;print i;}‘ lines.txt 1 0 1 0 1 0 1 0 1 0 1
再次取反,打印的就是偶数行
ghostwu@dev:~/linux/awk$ awk ‘!(i=!i)‘ lines.txt 第 2 行 第 4 行 第 6 行 第 8 行 第 10 行
标签:games mux back else ane sync lines type pre
原文地址:https://www.cnblogs.com/ghostwu/p/9098355.html