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


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM