awk匹配两个文件之间的字段并在匹配时使用条件

时间:2016-10-14 17:54:23

标签: awk

我正在$2 file1寻找$2的{​​{1}} {跳过标题},如果它们匹配,则file2中的值是$10 30而>$11 49,然后将该行打印到>文件。虽然output没有返回任何内容,但awk下面有shellcheck语法错误。输入和输出都是tab-delimited。我认为下面的内容很接近,但不确定是什么问题。谢谢 :)。

AWK

 awk -F'\t' -v OFS='\t' 'NR==FNR{A[$2];next}$2 in A
{if($10 >.5 OFS $11 > 49)
print ; next
' file1 file2
awk: cmd. line:2: {if($10 >.5 OFS $11 > 49)
awk: cmd. line:2:                   ^ syntax error
awk: cmd. line:3: print ; next
awk: cmd. line:3:             ^ unexpected newline or end of string

文件1

Missing in IDP but found in Reference:
2   166848646   G   A   exonic  SCN1A   68  13  16;20   0;0 17;15   0;0 0;0 0;0     c.[5139C>T]+[=] 52.94

file2的

chr2    166245425   SCN2A   AMPL5155065355  SNP Het C/T C   T   54  100   50    23  27
chr2    166848646   SCN1A   AMPL1543060606  SNP Het        G/A   G  A   52.9411764706   100 68  32  36

所需的输出

2   166848646   G   A   exonic  SCN1A   68  13  16;20   0;0 17;15   0;0 0;0 0;0     c.[5139C>T]+[=] 52.94

使用新的awk

进行修改
awk -F'\t' -v OFS='\t' 'NR==FNR{A[$2];next}$2 in A {
if($10 >.5 OFS $11 > 49) >>> if($10 >.5 && $11 > 49)
print }
' file1 file2 > out
awk: cmd. line:2: if($10 >.5 OFS $11 > 49) >>> if($10 >.5 && $11 > 49)
awk: cmd. line:2:                    ^ syntax error

1 个答案:

答案 0 :(得分:1)

你去......

$ awk 'BEGIN{FS=OFS="\t"} NR==FNR{a[$2]; next} 
                          ($2 in a) && $10>30 && $11>49 ' file1 file2