我有一个数据集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
Run Code Online (Sandbox Code Playgroud)
我还有第二个文件t1.txt:
752
728
856
693
713
792
812
706
737
751
745
Run Code Online (Sandbox Code Playgroud)
我试图从数据集中顺序提取第二个文件的相应列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
Run Code Online (Sandbox Code Playgroud)
这是抛出语法错误.
$ awk 'FNR==NR{a[$1]=1;next;} $1 in a {print $2;}' t1.txt t.txt
694
820
774
Run Code Online (Sandbox Code Playgroud)
对于每一行t1.txt,这将检查是否在第1列中显示相同的数字t.txt.如果是,则打印同一行的第2列中的数字:
$ awk 'FNR==NR{a[$1]=$2;next} $1 in a {print a[$1]}' t.txt t1.txt
694
820
Run Code Online (Sandbox Code Playgroud)
要将输出保存在文件中t2.txt,请使用:
awk 'FNR==NR{a[$1]=$2;next} $1 in a {print a[$1]}' t.txt >t2.txt
Run Code Online (Sandbox Code Playgroud)
FNR==NR{a[$1]=$2;next}
这将读取t.txt并创建a其值的数组.
$1 in a {print a[$1]}
对于文件中的每个数字t1.txt,这将检查数字是否出现在数组中a,如果是,则打印出相应的值.
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |