修改awk代码

时间:2014-11-11 18:09:32

标签: awk

如果在NV_11.tab中找到的字符串少于两个,我想打印一行输入文件11。现在没有捕获文件11中的字符串,因为正在寻找完全匹配。脚本需要清理才能捕获它们。我尝试在$ i旁边添加[^ 0-9],但似乎不允许这样做。

谢谢,Bernardo

awk 'NR==FNR{a[$1]++; next}
       {
        c=0;
        for(i=2;i<=NF;i++){
            if($i in a){c++}
        } 

       } 
       c<=1;' NV_1.tab 11

#NV_1.tab
HS302
HS303
HS304
HS305
HS319
HS321
HS322
HS323
HS324
HS326
HS327
HS328
HS329
HS330
HS331
HS332
HPSD74

#11
HPNK_11595  HS302_01873 HS303_01073
HPNK_11596  HPNK_11596  HPS_02673   HS302_01873

#current output
HPNK_11595  HS302_01873 HS303_01073
HPNK_11596  HPNK_11596  HPS_02673   HS302_01873

#desired output
HPNK_11596  HPNK_11596  HPS_02673   HS302_01873

1 个答案:

答案 0 :(得分:1)

我认为这样做最简单的方法是这样的。

for循环内添加

s=$i
gsub(/_.*$/, "", s)

然后将($i in a)替换为(s in a)