連続した数字を範囲に縮小するには?

連続した数字を範囲に縮小するには?

一意の数字(1行に1つ)を含むソートされた入力ファイル(またはコマンド出力)が与えられたら、連続した数字のすべての実行を1つの範囲に縮小したいと思います。

n
n+1
...
n+m

~になる

n,n+m

入力サンプル:

2
3
9
10
11
12
24
28
29
33

予想出力:

2,3
9,12
24
28,29
33

ベストアンサー1

dc精神的な訓練をする:

dc -f "$1" -e '
[ q ]sB
z d 0 =B sc sa z sb
[ Sa lb 1 - d sb 0 <Z ]sZ
lZx
[ 1 sk lf 1 =O lk 1 =M ]sS
[ li p c 0 d sk sf ]sO
[ 2 sf lh d sj li 1 + !=O ]sQ
[ li n [,] n lj p c 0 sf ]sM
[ 0 sk lh sj ]sN
[ 1 sk lj lh 1 - =N lk 1 =M ]sR
[ 1 sf lh si ]sP
[ La sh lc 1 - sc lf 2 =R lf 1 =Q lf 0 =P lc 0 !=A ]sA
lAx
lSx
'

おすすめ記事