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

Posted ghostwu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux常用基本命令:三剑客命令之-awk 三元表达式相关的知识,希望对你有一定的参考价值。

awk 3元表达式,if...else结构都可以用3元表达式改写

[email protected]:~/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 系统用户

统计普通用户与系统用户的个数

[email protected]:~/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值或者非空字符串表示"真",当模式为假,动作不会执行,当模式为真,动作会执行

[email protected]:~/linux/awk$ awk i=!i lines.txt 
第 1 行
第 3 行
第 5 行
第 7 行
第 9 行
第 11

awk扫描第一行时,i变量被初始化为空值, 取反之后 变为真, 整个模式就为真,所以打印第一行, 第二行的时候,取反赋值变为假。。。。以此类推

[email protected]:~/linux/awk$ awk {i=!i;print i;} lines.txt 
1
0
1
0
1
0
1
0
1
0
1

再次取反,打印的就是偶数行

[email protected]:~/linux/awk$ awk !(i=!i) lines.txt 
第 2 行
第 4 行
第 6  行
第 8 行
第 10

 

以上是关于Linux常用基本命令:三剑客命令之-awk 三元表达式的主要内容,如果未能解决你的问题,请参考以下文章

Linux常用基本命令:三剑客命令之-awk动作用法

Linux常用基本命令:三剑客命令之-awk模式用法

Linux常用基本命令:三剑客命令之-awk模式用法

shell命令三剑客之awk命令详解,cut命令,linux里记录行踪(操作记录)

Linux与bash:2.Linux终端命令之三剑客命令(grep,sed,awk)

Linux三剑客awk命令篇二:命令操作符