|
发表于 2009-9-22 15:39:19
|
显示全部楼层
Post by markuz;2029124
那条awk语句不是循环吧。
我是想将b文件中 第2个域匹配a文件的行 的所有行打印出来,有没有好方法?
awk其实就是一个循环。
你可以这样处理这个问题, 在awk中直接完成
awk 'NR==FNR{a[$1]}NR>FNR{if($2 in a)print}' a.txt b.txt
补充1:
如果非要用循环的话可以
while read line
do
awk -v tmp=$line '$2==tmp{print}' f24_2.data
done < f24_1.data
但是我觉得效率不高,不如awk效率好
devil@devil-desktop:~/bash/lx$ time bash f24.sh
12 78 111
59 88 773
real 0m0.018s
user 0m0.004s
sys 0m0.008s
devil@devil-desktop:~/bash/lx$ time awk 'NR==FNR{a[$1]}NR>FNR{if($2 in a)print}' f24_1.data f24_2.data
59 88 773
12 78 111
real 0m0.004s
user 0m0.000s
sys 0m0.000s |
|