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

标签 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;

其中“enhancer.list”是文件名; “bp.list”是将在 enhancer.list 的文件中查找的数字列表。

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

谢谢

最佳答案

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

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

我省略了 {print $0},因为这是条件为真时的默认操作。

关于linux - 使用for循环linux基于两个文件进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39561954/

相关文章:

linux - 如何在内核代码中查找 ssh 连接的 IP?

linux - 是否可以强制使用一系列虚拟地址?

sql-server - Linux 上的 JBoss 使用 SQL Server Windows 身份验证

python - pip 或 pip3 installrequirements.txt 的问题我应该做什么来修复此错误?

python - 通过 Popen 帮助 ping

linux - Bash 命令替换为参数

PHP 脚本不会死于 control +c

java - Linux Java应用程序内存泄漏检测

Python + pexpect - 如何建立 ssh 连接?

java - 如何在Java7中处理2个不同版本的HttpServletRequest?