目前我有一个命令的数字排序输出:
18,19,62,161,162,163,165
我想将这些数字列表压缩为单个数字或数字范围的列表
18-19,62,161-163,165
我考虑过尝试在 bash 中对数组进行排序并读取下一个数字以查看它是否为 +1 ...
foreach ($missing as $key => $tag) {
$next = $missing[$key+1];
if (!isset($first)) {
$first = $tag;
}
if($next != $tag + 1) {
if($first == $tag) {
echo '<tr><td>'.$tag.'</td></tr>';
} else {
echo '<tr><td>'.$first.'-'.$tag.'</td></tr>';
}
unset($first);
}
}
我在想 bash 中可能有一个可以做到这一点的单行代码,但我的谷歌搜索功能不足......
更新: 感谢@Karoly Horvath 的快速回答,我曾经用它来完成我的项目。我肯定会对那里的任何更简单的解决方案感兴趣。