我有一个数据集t.txt
:
827 819
830 826
828 752
752 694
828 728
821 701
724 708
826 842
719 713
764 783
812 820
829 696
697 849
840 803
752 774
我还有第二个文件t1.txt
:
752
728
856
693
713
792
812
706
737
751
745
我试图从数据集中按顺序提取第二个文件的相应第 2 列元素。
我用过了:awk -F " " '$1==752 {print $2}' t.txt >> t2.txt
我如何使用 for 循环执行上述指令并将其填充到一个文本文件中,而不是一一执行?
752 的输出将为 694。该 694 应写入不同的文本文件中。对于 812,它应该给我 820。694 和 820 都应该写入同一个文本文件中。它应该解析直到输入文件末尾。
我正在尝试:
for i in `cat t1.txt` | awk -F " " '$1==$i {print $2}' t.txt >> t2.txt
这是抛出语法错误。
此问题第三版的答案
$ awk 'FNR==NR{a[$1]=1;next;} $1 in a {print $2;}' t1.txt t.txt
694
820
774
此问题第二版的答案
对于每一行t1.txt
,这将检查相同的数字是否出现在第一列中t.txt
。如果是,则打印同一行第 2 列中的数字:
$ awk 'FNR==NR{a[$1]=$2;next} $1 in a {print a[$1]}' t.txt t1.txt
694
820
将输出保存在文件中t2.txt
, use:
awk 'FNR==NR{a[$1]=$2;next} $1 in a {print a[$1]}' t.txt >t2.txt
怎么运行的
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)