我正在编写新的bash脚本,并提出以下问题;如何从一列中提取范围(第一个和最后一个值),该列包含几个可以增加或减少3的增量和减量数字序列,并在检测到增量> 3时跳转到下一个序列,例如:
1
4
7
20
23
26
100
97
94
需要作为输出接收:
1,7
20,26
100,94
答案 0 :(得分:3)
这个awk脚本为您提供了预期的输出:
db._explain()
答案 1 :(得分:3)
使用awk:
$ awk 'NR==1||sqrt(($0-p)*($0-p))>3{print p; printf "%s", $0 ", "} {p=$0} END{print $0}' file
1, 7
20, 26
100, 94
说明:
NR==1 || sqrt(($0-p)*($0-p))>3 { # if the abs($0-previous) > 3
print p # print previous to end a sequence and
printf "%s", $0 ", " # start a new sequence
}
{ p=$0 }
END { print $0 }