使用for循环linux查询基于两个文件

时间:2016-09-18 19:47:03

标签: linux

我正在尝试使用for循环基于两个变量进行查询...使用以下命令

for i in $(< enhancer.list)
do for j in $(< bp.list)
do
awk ' BEGIN {FS=OFS="\t"};
{if ($1=="chr2" && $7<= $j && $8>= $j ) {print $0}}' $i.txt > $i.result.$j.txt
done;
done;

其中&#34; enhancer.list&#34;是文件名;和&#34; bp.list&#34;是一个将在来自enhancer.list的文件中查找的数字列表。

我无法检索与awk查询匹配的任何行。是否有可能$ j不在括号内()请提出任何建议。

由于

1 个答案:

答案 0 :(得分:0)

使用j选项将awk分配给-v变量。

awk -v j=$j ' 
    BEGIN {FS=OFS="\t"};
    $1 == "chr2" && $7 <= $j && $8 >= j' $i.txt > $i.result.$j.txt

我遗漏了{print $0},因为当条件为真时,这是默认操作。