朋友们,我有一个文件中的非连续数字列表,需要列出连续的数字范围。
示例:
641
642
643
712
713
714
813
814
815
需要打印:
641-643,712-714,813-815
在awk,unix或perl中
答案 0 :(得分:1)
此行适用于您的示例:
awk 'NR==1{printf "%s",$0;p=$0;next}
$0!=p+1{printf "-%d %d",p,$0}{p=$0}END{print "-"$0}' f
包含您的数据:
kent$ cat f
641
642
643
712
713
714
813
814
815
kent$ awk 'NR==1{printf "%s",$0;p=$0;next}$0!=p+1{printf "-%d %d",p,$0}{p=$0}END{print "-"$0}' f
641-643 712-714 813-815
请注意,最后一个组号可能有问题(意外-
)这取决于您的输入。无论如何,你明白了,你可以在上面的行上做一些调整。