【发布时间】:2016-08-27 23:50:46
【问题描述】:
在下面的awk 中,我使用$5 $7 和$8 的file1 来搜索$3 $5 和$6 的file2。标题行被跳过,然后输出一个新文件,其中包含哪些行匹配,如果它们与file 不匹配,则匹配缺失。当我搜索一个匹配项时,使用 3 个字段作为查找的键并且不要跳过标题我得到current output。对于这篇长文和file examples,我深表歉意,我只是想把一切都包括在内,以帮助实现这一目标。谢谢你:)。
文件1
Index Chromosomal Position Gene Inheritance Start End Ref Alt Func.refGene
98 48719928 FBN1 AD 48719928 48719929 AT - exonic
101 48807637 FBN1 AD 48807637 48807637 C T exonic
文件2
R_Index Chr Start End Ref Alt Func.IDP.refGene
36 chr15 48719928 48719929 AT - exonic
37 chr15 48719928 48719928 A G exonic
38 chr15 48807637 48807637 C T exonic
awk
awk -F'\t' '
NR == FNR {
A[$25]; A[$26]; A[$27]
next
}
{
B[$3]; B[$5]; B[$6]
}
END {
print "Match"
OFS=","
for ( k in A )
{
if ( k && k in B )
printf "%s ", k
}
print "Missing from file1"
OFS=","
for ( k in B )
{
if ( ! ( k in A ) )
printf "%s ", k
}
print "Missing from file2"
OFS=","
for ( k in A )
{
if ( ! ( k in B ) )
printf "%s ", k
}
}
' file1 file2 > list
电流输出
Match
Missing from file1
A C Ref 48807637 Alt Start T G - AT 48719928 Missing from file2
期望的输出
Match 48719928 AT -, 48807637 C T
Missing from file1 48719928 A G
Missing from file2
【问题讨论】:
-
去掉数组元素之间的空格
-
删除空间确实允许
awk运行,但输出不正确(似乎是一个包含原始数据和一些附加数据的文件)......我发布了它作为编辑。谢谢你:)。 -
current output 1代表什么?您的脚本有语法错误,它不能产生任何输出。Edit代表什么?只需显示具有清晰、简洁、可测试的样本输入和预期输出的 minimal reproducible example。
标签: awk