我对打印行有疑问,这些行具有相同的第四列,但第一列不同。
输入:
156817 GJB2 HET 882745
156817 ASPA HET 882745
156817 HFE HET 882745
156917 ABCA4 HET 882745
156917 MEFV HET 882745
156917 HFE HET 882745
228417 GJB2 HET 883590
228417 BTD HET 883590
228417 MCCC1 HET 883590
输出:
156817 HFE HET 882745 156917 HFE HET 882745
为了理解: 我只想获得第一列的结果,这些结果不同,但具有相同的第四列和相同的第二列并将其打印到一行。所以对于这个例子。第 4 列相同 (882745),但第 1 列不同(156817 和 156917),并且第 2 列 (HFE) 相同。这对我来说确实很难做到。我尝试了很多方法,但还是能得到结果。 谢谢
我所做的尝试:
awk -F'\t' -v OFS="\t" '{prev=$0; f1=$2; f2=$4; f3=$1
getline
if ($2 == f1 && $4 == f2 && $1!= f3 ) {
print prev
print }
}' file
但是这不起作用..
最佳答案
awk解决方案:
awk -F'\t' '{ k=$2 SUBSEP $3 SUBSEP $4 }
{ if((k in a) && $1!=a[k]){ printf "%s\t%s\t%s\t%s\t%s ", a[k],$2,$3,$4,$0 }
else a[k]=$1 }END{ print "" }' file
输出:
156817 HFE HET 882745 156917 HFE HET 882745
关于awk 与条件的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46157625/