我有两个不同长度的文件,其中 file2 是一个大参考文件,我从文件 1 中提取数据。
我有一行 awk,我通常会调整它以在我的文件中查找和替换,但它总是在同一列中查找和替换。
因此,对于类似的情况,如果 file1 的 $1 = file2 的 $7,将 file1 的 $1 替换为 file2 的 $2,我通常会使用:
awk 'FNR==NR{a[$7]=$2;next}a[$1]{$1=a[$1]}1' file2 file1 > newfile
但是,我正在尝试一种编码方式:
如果 file1 的 $2 = file2 的 $2,将 $1 file1 替换为 file2 的 $1。
但是在上面的代码中,我不知道哪个 $1 是指“find”,哪个 $1 是指“replace”。
file1 看起来像
0 rs58108140 0 0 G A
0 rs189107123 0 0 C G
0 rs180734498 0 0 C T
file2 看起来像
1 rs58108140 0 10583 G A 1:10583
1 rs189107123 0 10611 C G 1:10611
1 rs180734498 0 13302 C T 1:13302
期望的输出是:
1 rs58108140 0 10583 G A
1 rs189107123 0 10611 C G
1 rs180734498 0 13302 C T
提前感谢您提供的任何帮助。