Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 如何打印序列号的范围_Unix_Awk_Sed_Perl Module - Fatal编程技术网

Unix 如何打印序列号的范围

Unix 如何打印序列号的范围,unix,awk,sed,perl-module,Unix,Awk,Sed,Perl Module,嗨,朋友们,我有一个文件中的非序列号列表,需要列出序列号的范围 例如: 641 642 643 712 713 714 813 814 815 需要打印: 641-643,712-714,813-815 在awk、unix或perl中,这一行适用于您的示例: 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
需要打印:

641-643,712-714,813-815

在awk、unix或perl中,这一行适用于您的示例:

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

请注意,最后一个组号可能有问题(出现意外的
-
),这取决于您的输入。无论如何,你有了这个想法,你可以在上面的线路上做一些调整。

你尝试了什么?展示你的努力是很重要的。我的同事正在处理这样的文件,因此我有责任帮助他。你应该首先向我们展示你有什么累了,这样我们就可以通过指出你在调查过程中犯的任何错误和任何更好的调查来帮助你朝着正确的方向前进。@TomFenech这不是重复,是吗?我会说,“类似的问题”@fedorqui bro抱歉我太苛刻了。@MaheshCholleti接受他的回答,如果这对你有帮助的话。