- 论坛徽章:
- 0
|
我自己是这么理解的
命令是:
awk 'NR==FNR {a[substr($1,2,5)]=$2} NR>FNR && a[b=substr($1,1,4)] {print $0,a[b]}' 2.txt 1.txt
将命令分为两个部分。
(1)先解析NR==FNR {a[substr($1,2,5)]=$2}
对于NR,读取行数分别为1234(2.txt),5678(1.txt)
对于FNR,读取行数分别为1234(2.txt),1234(1.txt)
因此NR==FNR的范围就在2.txt文件里了,substr函数得出的是:
a[0011]=$2=11111
a[0012]=$2=22222
a[0013]=$2=33333
a[0014]=$2=44444
(2)再来看NR>FNR && a[b=substr($1,1,4)] {print $0,a[b]}这一部分
NR>FNR的范围实在1.txt文件里,substr函数得出的是:
a[b=0011]
a[b=0012]
a[b=0013]
a[b=0014]
以上数组是在(1)中已经赋值了
再print $0,a[b],此处的$0是范围在1.txt里的
得出最后的结果
不知道我分析的过程对不对,还希望大家来指正 |
|