让file.txt
成为以下文件
1
2
3
5
6
7
15
16
17
19
20
23
24
我试图编写一个awk
命令来打印丢失的数字范围。当范围只包含一个数字时,就应该单独打印这个数字。预期输出是
4
8-14
18
21-22
This post为我做了一次班轮的工作
awk '$1!=p+1{print p+1"-"$1-1}{p=$1}' file.txt
4-4
8-14
18-18
21-22
我试图把它修改成
awk 'if ($1!=p+1){if (p+1!=$1-1) {print p+1"-"$1-1} else {print p+1} }{p=$1}' file.txt
但它并不像预期的那样起作用。我似乎误解了如果-否则的语法。我做错了什么?
发布于 2016-07-26 21:41:27
您可以使用:
awk '$1 != p+1 {print p+1 ($1-1 > p+1 ? "-" $1-1 : "")} {p=$1}' file
4
8-14
18
21-22
https://stackoverflow.com/questions/38600267
复制相似问题