将多行awk命令放在for循环中,不打印变量

时间:2020-01-31 21:17:14

标签: loops for-loop awk

我有一条命令如下,该命令根据 IDs 文件中的行从 Allergens 文件中获得行。

awk '
    FNR==NR{
    a[$1]
    next
    }
    /^Query/ || $2 in a
    ' IDs C100_Allergens | grep -B 1 'Hit: ' | grep -v '^--'  > C100_Allergens_matches.txt

但是,我有许多 sample_Allergens 文件,并且想要像这样循环运行,其中 list 是一个具有不同样品名称的文件:

for i in `cat list`
do
    awk '
    FNR==NR{
    a[$1]
    next
    }
    /^Query/ || $2 in a
    ' IDs "$i"_Allergens | grep -B 1 'Hit: ' | grep -v '^--'  > "$i"_Allergens_matches.txt
done

我尝试了此循环,包括对awk使用变量标志,即-v i =“ $ i”:

for i in `cat list`
    do
        awk -v i="$i" '
        FNR==NR{
        a[$1]
        next
        }
        /^Query/ || $2 in a
        ' IDs "$i"_Allergens | grep -B 1 'Hit: ' | grep -v '^--'  > "$i"_Allergens_matches.txt
    done

我只会不断获取空文件。预先感谢您的帮助!

0 个答案:

没有答案