awk 有时确实比较省事,做些简单的文本处理,还是很方便的,在这介绍下两个文件的join的操作。
原始文本
bb.txt
1 2 |
|
cc.txt
1 2 3 |
|
awk join主要是用到连个内置的变量 NR,FNR,先看这的区别
1 2 3 4 5 6 |
|
NR是读取所有的行号
FNR读取每个文件的行号索引号,当文件发生变化时,FNR从1开始计算
当NR=FNR时读的是第一个文本,当NR=FNR时读的是第二个文本,那么跟awk读取文件关键的思路就是先读第一个文件,然后匹配第二个文件中是否存在。
1 2 3 4 |
|
这个其实是ccl eft outer join bb,稍微解读一下。
当NR==FNR,其实就是s[a]=10 s[b]=12
当NR!=FNR时,就是$1 也就是a,b为索引,去cc.txt中查找
做全关联时,也就是join时可以用下列方法
1 2 3 4 5 6 |
|
这两种方法其实是一样的。