首页 > 系统服务 > 详细

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

时间:2018-05-28 17:45:42      阅读:262      评论:0      收藏:0      [点我收藏+]

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 三元表达式

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!