我想将file2的第二列与file1的第一列进行比较。如果它们相等,我想将file1的第二列添加到file2,如output.txt所示。
文件2
chr5 ENST00000514151 utr5 0 +
chr5 ENST00000512281 utr5 0 +
chr5 ENST00000512281 utr5 0 +
chr5 ENST00000512281 utr5 0 +
文件1
ENST00000512281 a
ENST00000504031 b
ENST00000776348 c
output.txt
chr5 a ENST00000512281 utr5 0 +
chr5 a ENST00000512281 utr5 0 +
chr5 a ENST00000512281 utr5 0 +
我可以比较文件
awk 'NR==FNR{a[$1];next}$2 in a{print}' file1 file2
这给出以下输出:
chr5 ENST00000512281 utr5 0 +
chr5 ENST00000512281 utr5 0 +
chr5 ENST00000512281 utr5 0 +
但是我不知道如何将file1的第二列添加到输出中。
您可以使用将$2
in的值存储file1
到数组中a[$1]=$2
。因此,您可以尝试:
awk '
NR==FNR{
a[$1]=$2 ; next }
$2 in a {
$1=$1 FS a[$2]
print
}' file1 file2
输出:
chr5 b ENST00000504031 utr5 0 +
chr5 b ENST00000504031 utr5 0 +
chr5 a ENST00000512281 utr5 0 +
chr5 a ENST00000512281 utr5 0 +
chr5 a ENST00000512281 utr5 0 +
说明:
$1
,该分隔符是一个空格..然后重建记录,以便以后可以打印。file2
$1=$1 FS a[$2]
FS
print
print
可以将其简化为1
。$2 in a { $1=$1 FS a[$2] }1
file2
,因此任何空格或制表符序列都将被截断为输出中的单个空格。要使原始格式保持file2
一种格式,可以使用split()
Gnu Awk版本4中的功能。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句