从文件中的条目生成范围

我有一个txt文件包含如下所示的条目

1 2 3 4 7 8 9 12 14 15 

我需要生成如下的范围

 1-4 7-9 12-12 14-15 

我如何实现上述输出?

这是我试过的:

 awk '{q=$1}{f=$1}{print $q} $1!=p+1{print l"-"f}{l=p+1}{p=$1} END{print}' filename 

我会说…

 awk -v OFS=- 'prev+1<$0 {print first ? first : 1,prev; first=$0} {prev=$0} END {print first, prev}' file 

对于你给定的文件,它返回:

 $ awk -v OFS=- 'prev+1<$0 {print first ? first : 1,prev; first=$0} {prev=$0} END {print first, prev}' file 1-4 7-9 12-12 14-15 

我不会经过你的尝试awk '{q=$1}{f=$1}{print $q} $1!=p+1{print l"-"f}{l=p+1}{p=$1} END{print}' filename但我建议你使用更具代表性的变量名称,以及从一小块开始,然后使脚本增长。 否则,一旦它不起作用,它就会变成一个你想扔掉的丛林。