shell入门-awk-3

awk的内置变量

NR 表示行

NF 表示段

显示第十行

[root@wangshaojun ~]# awk -F ':' 'NR==10' 1.txt
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

显示小于第三行

[root@wangshaojun ~]# awk -F ':' 'NR<3' 1.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

显示小于第三行 显示第1 3 4 段

[root@wangshaojun ~]# awk -F ':' 'NR<3 {print $1,$3,$4}' 1.txt


[root@wangshaojun ~]# awk -F ':' '{if(NR<3) print $1,$3,$4}' 1.txt


root 0 0
bin 1 1

显示小于第三行 显示第1 3 4 段并添加分隔符

[root@wangshaojun ~]# awk -F ':' 'OFS=":" {if(NR<3) print $1,$3,$4}' 1.txt
root:0:0
bin:1:1

//////////////////////////////////////////////////////////////////////////////////////////////////

直接打印NF

[root@wangshaojun ~]# awk -F ':' '{print NF}' 1.txt
7
7
7

....

段数等于7的行 打印第一段

[root@wangshaojun ~]# awk -F ':' 'NF==7 {print $1 }' 1.txt
root
bin
daemon
adm

....

如果段数等于7,打印第一段

[root@wangshaojun ~]# awk -F ':' '{if (NF==7) print $1}' 1.txt
root
bin
daemon
adm

.....

数学运算

$7显示第三段的数字加上第四段的和

[root@wangshaojun ~]# awk -F ':' '$7=$3+$4' 1.txt
bin x 1 1 bin /bin 2
daemon x 2 2 daemon /sbin 4
adm x 3 4 adm /var/adm 7
lp x 4 7 lp /var/spool/lpd 11

.....

$7显示第三段的数字加上第四段的和并显示第三段第四段第七段

[root@wangshaojun ~]# awk -F ':' '$7=$3+$4 {print $3,$4,$7}' 1.txt
1 1 2
2 2 4
3 4 7
4 7 11
5 0 5

.......

$7显示第三段的数字加上第四段的和并显示第三段第四段第七段,显示分隔符

[root@wangshaojun ~]# awk -F ':' 'OFS=":" {$7=$3+$4; print $3,$4,$7}' 1.txt
0:0:0
1:1:2
2:2:4
3:4:7

.....

求所有第三段的数字的和

[root@wangshaojun ~]# awk -F ':' '{(sum=sum+$3)}; END {print sum}' 1.txt
3785

////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////

总结:OFS分隔符   NF表示段    NR表示行 

原文地址:https://www.cnblogs.com/wangshaojun/p/4979535.html