2016-06-07 67 views
2

我有一个包含条目的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 
+2

嗨,欢迎来到SO。请提供一些代码以及您尝试过的内容。谢谢 – acostela

+0

awk'{q = $ 1} {f = $ 1} {print $ q} $ 1!= p + 1 {print l“ - ”f} {l = p + 1} {p = $ 1} END {print} '文件名文件名是txt文件 – Raziel

回答

2

我想说...

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但我建议你使用更具代表性的变量名称,以及从一小块开始,然后让脚本成长。否则,一旦它不起作用,它就会变成一个你想扔掉的丛林。

+1

非常感谢fedorqui。你救了我的一天! – Raziel

+0

@Raziel很高兴阅读!请注意,如果问题得到解决,您可以将答案标记为已接受。 – fedorqui