繁体   English   中英

awk - if else语句的问题

[英]awk - Issues with if else statements

file.txt成为以下文件

1
2
3
5
6
7
15
16
17
19
20
23
24

我试图编写一个awk命令来打印缺少的数字范围。 当范围仅包含一个数字时,应单独打印此数字。 预期的产出是

4
8-14
18
21-22

这篇文章几乎完成了我的工作与一个班轮

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

但它没有按预期工作。 我似乎误解了if-else语法。 我究竟做错了什么?

您可以使用:

awk '$1 != p+1 {print p+1 ($1-1 > p+1 ? "-" $1-1 : "")} {p=$1}' file

4
8-14
18
21-22

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM