从文件中的条目生成范围

Generate ranges from entries in a file

我有一个包含以下条目的 txt 文件

1
2
3
4
7
8
9
12
14
15

我需要生成如下范围

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

如何实现上述输出?

这是我试过的:

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

我会说...

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

对于您给定的文件 returns:

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

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