【发布时间】:2017-06-26 22:43:33
【问题描述】:
假设一个文本文件file 包含多行数字范围。每个范围的下限和上限以破折号分隔,并且各个范围都进行了排序(即,范围 101-297 在 1299-1314 之前)。
$cat file
101-297
1299-1314
1301-5266
6898-14503
如何在 bash 中确认这些数字范围中的一个或多个是否重叠?
在我看来,所需要的似乎只是在相邻行之间迭代地执行整数比较。单个整数比较可能如下所示:
if [ "$upperbound_range1" -gt "$lowerbound_range2" ]; then
echo "Overlap!"
exit 1
fi
不过,我怀疑这种比较也可以通过 awk 来完成。
注意:理想情况下,代码不仅可以确定任何范围是否与其直接后继范围重叠,还可以确定哪个范围是重叠的。
【问题讨论】:
标签: bash for-loop awk range comparison