For loop 用于递归返回结果的awk脚本

For loop 用于递归返回结果的awk脚本,for-loop,awk,For Loop,Awk,我的数据集如下(t.txt): 我有第二个文件,如下所示(t1.txt): 我试图使用for循环从第一个数据集中提取第二个文件的第2列元素 我试过: for i in `cat t1.txt` do awk -F " " '$1=i {print $2}' t.txt > t0.txt done 期望输出为: 694 820 774 不幸的是,我得到了一个空白文件 我曾经尝试过像这样手动执行:awk-F”“'$1==752{print$2}'t.txt>t0.txt 所得结果如下 6

我的数据集如下(t.txt):

我有第二个文件,如下所示(t1.txt):

我试图使用for循环从第一个数据集中提取第二个文件的第2列元素

我试过:

for i in `cat t1.txt`
do 
awk -F " " '$1=i {print $2}' t.txt > t0.txt
done
期望输出为:

694
820
774
不幸的是,我得到了一个空白文件

我曾经尝试过像这样手动执行:
awk-F”“'$1==752{print$2}'t.txt>t0.txt

所得结果如下

694
774

如何一次性完成整个t1文件?

最简单的方法:使用
join

$ join -o 1.2 <(sort t.txt) <(sort t1.txt)
694
774
820
它记住
t1.txt
中的键,然后在
t.txt
上循环(当累计记录编号
NR
不等于文件的记录编号
FNR
),如果第一个字段出现在
t1
中,则打印第二个字段

694
774
$ join -o 1.2 <(sort t.txt) <(sort t1.txt)
694
774
820
$ awk 'NR==FNR {key[$1]; next} $1 in key {print $2}' t1.txt t.txt
694
820
774