現在、コマンドからの数値のソートされた出力があります。
18,19,62,161,162,163,165
これらの番号リストを単一の番号または番号の範囲のリストに凝縮したいと思います
18-19,62,161-163,165
bashで配列を並べ替えて、次の数値を読み取って+1かどうかを確認することを考えました...基本的に同じことを行うPHP関数がありますが、Bashに置き換えるのに問題があります。
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に、プロジェクトを完了するために使用した簡単な回答をありがとう。私はそこにあるもっと簡単な解決策にきっと興味があるでしょう。