Linux Bash-如何检查一个文件中的id字符串是否在另一个文件的id范围策略中?

Linux Bash-如何检查一个文件中的id字符串是否在另一个文件的id范围策略中?,linux,bash,unix,Linux,Bash,Unix,经过长时间的搜索没有成功,我来这里寻求帮助。我有两个文件: a、 txt-包含id字符串的列表 b、 txt-包含id范围策略的列表 例如: a、 txt: AC0359 AC0360 AC0361 AC0362 AC0369 AC0372 AC0374 AC0376 AC0380 BD0381 BD0384 BD0386 BD0389 BD0390 BD0392 BD0393 EF0394 EF0395 EF0398 EF0402 EF0404 EF0409 EF0410 b、 txt: f

经过长时间的搜索没有成功,我来这里寻求帮助。我有两个文件: a、 txt-包含id字符串的列表 b、 txt-包含id范围策略的列表

例如:

a、 txt:

AC0359
AC0360
AC0361
AC0362
AC0369
AC0372
AC0374
AC0376
AC0380
BD0381
BD0384
BD0386
BD0389
BD0390
BD0392
BD0393
EF0394
EF0395
EF0398
EF0402
EF0404
EF0409
EF0410
b、 txt:

from="AC0000" to="AC0400"
from="BD0300" to="BD0700"
from="EF0400" to="EF1000"
from="GT0000" to="GT2700"
我想知道a.txt中列出的每个id字符串是否在b.txt中列出的一个范围策略内。我一直在试图找到一个解决这个问题的办法,所以我真的很感谢你的帮助

这就是我到目前为止所做的:

found_range=false
while read barcode; do
    while read range_line <&3; do
        if [[ $range_line == from=* && $found_range = false ]]
        then
            start_range=$(echo $range_line | cut -d '"' -f 2);
            end_range=$(echo $range_line | cut -d '"' -f 4);
            if [[ ! "$barcode" < "$start_range" && ! "$barcode" > "$end_range" ]]
            then
                echo "$barcode is between the range $start_range and $end_range"
            fi
        fi
    done 3<b.txt
done <a.txt
found\u range=false
读取条形码时;做
读取范围_行“$end _range”]]
然后
echo“$条形码在$start\u范围和$end\u范围之间”
fi
fi

完成3我能够解决这个问题,我的解决方案在编辑后的答案中。

我能够解决这个问题,我的解决方案在编辑后的答案中。

你尝试过自己制定解决方案吗?是的,我尝试过,但我对bash脚本非常陌生,我尝试解决这个问题还没有成功。我尝试从a.txt中读取每一行并将其保存到变量$rec中。对于每一个$rec,我使用“grep”查找以b.txt中相同id前缀开头的策略。但是,我知道在同一次迭代中读取两个单独的文件可能会有问题,我怀疑我的id比较失败,或者是因为我没有正确地将id与范围进行比较。您是否尝试自己制定解决方案?是的,我尝试过,但我对bash脚本编写还很陌生,我解决这个问题的尝试没有奏效。我尝试从a.txt中读取每一行并将其保存到变量$rec中。对于每一个$rec,我使用“grep”查找以b.txt中相同id前缀开头的策略。但是,我知道在同一次迭代中读取两个单独的文件可能会有问题,我怀疑我的id比较失败,或者是因为我没有正确地将id与范围进行比较。