从文件中的条目生成范围
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
但我确实建议你使用更具代表性的变量名,以及从一小部分开始,然后让你的脚本成长。否则,一旦不起作用就变成了你想扔掉的丛林。
我有一个包含以下条目的 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
但我确实建议你使用更具代表性的变量名,以及从一小部分开始,然后让你的脚本成长。否则,一旦不起作用就变成了你想扔掉的丛林。