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表示行