awk变量应用实例

发布时间:2019-09-27编辑:脚本学堂
awk变量应用实例(NR与FNR的应用),有需要的朋友可以看看。

linuxjishu/13830.html target=_blank class=infotextkey>awk变量应用实例(NR与FNR的应用),有需要的朋友可以看看。

在写squid的自动配置脚本时,使用到了sed的/r把一个文件的内容插入另一个文件。
今天看到awk对两个文件的处理方法,要通过不少运算,不怎么方便。
不过作为加深对NR和FNR的不同的理解,还是有些作用。

先说下NR和FNR的不同:在一次awk中,NR是从头计算到尾的,而FNR是每打开一个文件,就重新计算,例如下面这行代码:
[root@raocl ~]# awk '{print NR,FNR,$0}' ts st
1 1 123 456
2 2 abc def
3 3 ABC DEF
4 4 654 321
5 1 123 456
6 2 abc def
7 3 ABC DEF
8 4 654 321

再来看下面这个例子:
[root@raocl ~]# cat a
1000 北京市 地级 北京市 北京市
1100 天津市 地级 天津市 天津市
1210 石家庄市 地级 石家庄市 河北省
1210 晋州市 县级 石家庄市 河北省
1243 滦县 县级 唐山市 河北省
1244 滦南县 县级 唐山市 河北省
[root@raocl ~]# cat b
110000,北京市
120000,天津市
130000,河北省
130131,平山县
130132,元氏县

[root@raocl ~]# awk 'BEGIN{FS="[|,]";OFS=","}NRFNR{print $1,$2,a[$2]}' a b
110000,北京市,1000
120000,天津市,1100
130000,河北省,
130131,平山县,
130132,元氏县,

注解: NRFNR也就是到文件b的时候,打印文件b的第1、2列和之前创建的数组a[北京市]等。