Rubyでどう書く?:連続した数列を範囲形式にまとめたい.いや,Rubyで書かない.
Wed Nov 27 12:43:56 JST 2013 (modified: Fri Sep 29 21:38:45 JST 2017)
views: 1503, keywords:ワンライナー,プログラミング,楽しいお昼休み,シェル芸 この記事は最終更新日が7年以上前のものです。
http://builder.japan.zdnet.com/script/sp_ruby-doukaku-panel/20369264/から.
shでの回答もあったので,どうせならもっと強力なワンライナーで.
環境はMac.たぶんもうちょっと短くなる.
echo 1 2 3 5 7 8 | tr ' ' '\\n' |\\
$ awk '{if(a==$1-1){printf(" %d",$1)}else{printf("\\n%d",$1)}a=$1}' |\\
awk 'NF>1{print $1"-"$NF}NF<=1{print $1}' | tr '\\n' ',' | gsed 's/,$/\\n/g'
1-3,5,7-8
gsedはLinuxだとsedでやります.
仕事仕事.