码迷,mamicode.com
首页 > 系统相关 > 详细

Linux常用基本命令:三剑客命令之-awk 三元表达式

时间:2018-05-28 17:59:36      阅读:221      评论:0      收藏:0      [点我收藏+]

标签: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

 

Linux常用基本命令:三剑客命令之-awk 三元表达式

标签:games   mux   back   else   ane   sync   lines   type   pre   

原文地址:https://www.cnblogs.com/ghostwu/p/9098355.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!