我有一条命令如下,该命令根据 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
我只会不断获取空文件。预先感谢您的帮助!