- 论坛徽章:
- 0
|
awk 'NR==FNR{a[substr($1,2,4)]=$2}NR>FNR{print $0,a[substr($1,1,4)]}' file2 file1 >file3
这里NR==FNR是判断当file2中的记录号与file1中的记录号相等时,使用数组取file2里的值a[substr($1,2,4)]实际上是a[0011],将$2也就是11111赋给数组a[0011],当file2的NR值大于file1的值(也就是file2跳到下一行时),打印file1的所以列,并打印数组a[substr($1,1,4)]即file1第一列的第一个字母开始,宽度为字a[0011](为11111)的值。循环执行,直到执行完file2的最后一行。
其中NR==FNR是因为file2的行少,并要将file2中每一行的$2的值放入数组中吧。这是我的理解,还有两个地方不理解,1.什么时候是第file2中的$1,$2,什么时候是指file1中的$1,$2。2.$0是指文档的所有内容,在这里是指第一行的所有内容么?
NR<=FNR是指正在处理的文件,NR>FNR就是指另外的那个文件
这句里NR<=FNR应该是NR==FNR吧?另外这句话我不理解,有相关的教程么?我学习学习。
有理解不对或错误的地方请大家指正,谢谢大家。 |
|