图片新闻 您的当前位置:主页 > 图片新闻 >
NR == FNR awk问题
2019-04-04 18:29
 
注意:
如果NR = FNR,则假设当前正在读取第一文件a,然后使用循环{a[$ 2]= $ 0;}来存储矩阵a中的文件的每一行。两个字段称为下标。
如果NR = FNR为假,则认为当前正在读取第二个文件b,则{a[$ 2]= $ 0;第二个cdr文件的每一行无条件执行{printa[$ 1]“|”$ 2变量,$ 1变量是第二个文件的第一个字段,第一个文件的第二个$ 2文件与读取第一个文件时的数组索引相同是的
所以你可以在这里使用[$ 1]来引用矩阵。
========================================================================================================================================
以下是对CU神流程jason 680的详细分析。
awk -F'|''NR = = FNR{a[$ 2]= $ 0;{printa[$ 1]FS $ 2}'ab
没有BEGINblock,FS =“|”-F -F参数'|'不启动模块,直接识别-F选项并添加参数。
Starttofirstfile'a'以文件a的第一行开头。
Readfilealine1andgetdata张三| 000001读取文件的第一行a并获取数据A.000001B:$ 1 = Chansan C:$ 2 = 000001
此时,NR和FNR的值相等,NR = FNR模块NR == FNR{a[$ 2]= $ 0;A:a[$ 2]= $ 0a[000001]=张先生| 000001 B:nextnextcycle和getnextlinedata2
Readfilealine2andgetdata Li four |读取文件000002a的第二行并获取数据
答:$ 0 =李四| 00000 2 B:$ 1 = C:$ 2 = 000002
在这种情况下,NR和FNR的值相等,NR = FNR模块NR == FNR{A[$ 2]= $ 0; NRandFNR等于2,一个RUNR = FNRblock。答:[$ 2]= $ 0a[000002]=李四| 000002B:nextnextcycle和getnextlinedata
退出filea,getnextfilebdata将文件读入下一个文件,然后从下一个文件中读取数据。
3
Readfilebline1和getdata000001 | 10读取文件b的第一行并获取数据A.1010 B:$ 1 = 000001 C:$ 2 = 10
那么,NRis3和FNRis1,他们必须要小心。此时,NR和FNR的值不同。模块NF = FNR未执行,下一个模块{printa[$ 1]FS $ 2}并且didn'trunNR = FNRblock{printa[$ 1][$ 1]= a[000001]= 000001FS = | $ 2 =10你卖它000001 | 10年
4
Readfilebline2和getdata000001 | 20A:$ 0 = 000001 | 20B:$ 1 = 000001 C:$ 2 = 20
NRis4和FNRis2,它们对应笔记本和grand,runNR = FNRblock,runnextblock{printa[$ 1]FS $ 2}a[$ 1]= a[000001]= Zhang San | 000001FS = | $2 = 20 youwillseetheeputputhang San | 000001FS |
cycletoreadthefileb5
Readfilebline3,ygetdata000002 | 30
输出= =李四| 000002 | 30
6
Readfilebline4,ygetdata000002 | 15年
==退出John Doe | 000002 | 15年

 
上一篇:四虎图书馆的最后一个地址是什么?
下一篇:家庭医学,人体的第二脑 - “腹部大脑”

腾讯分分彩开奖结果