1 2
1 3
1 4
2 5
2 6
2 7
第二个文件是
2
4
5
如果第二个文件某行的内容和第一个文件的第二列内容相同,则输出第一个文件的该行,比如,这里会输出:
1 2
1 4
2 5
awk该怎么写啊。
本来想用paste,发现解决不了啊。高手们帮下啊,小弟在这里感谢了~
awk 'NR==FNR{a[$1]++}NR>FNR&&($2 in a)' file2 file1
try:
假设urfile1已经对第2字段排序。
[Copy to clipboard] [ - ]CODE:$ join -1 2 -o 1.1,1.2 urfile1 urfile2
[Copy to clipboard] [ - ]CODE:cat file2|while read LINE
do
awk '{if($2=="'$LINE'") print $0}' file1
done
QUOTE:原帖由 zhaopingzi 于 2008-6-13 21:55 发表

cat file2|while read LINE
do
awk '{if($2=="'$LINE'") print $0}' file1
done
这个效率太低了,每次循环都要把file1全部读取一遍,不可取,建议参照ly的代 ***
awk 'BEGIN{while (getline < "urfile2"){a[$1]}{if($2 in a){print $0}' urfile1
不知道这个的效率和LY的比起来那个更快些.
好多人帮忙啊,我去试验下不同命令的效率去
会员注册
会员登录
个人空间