【发布时间】:2025-08-20 05:50:02
【问题描述】:
设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
但它没有按预期工作。我似乎误解了 if-else 语法。我究竟做错了什么?
【问题讨论】:
-
阅读 Arnold Robbins 的《Effective Awk Programming, 4th Edition》一书的前几页来解决这个问题。然后阅读本书的其余部分:-)。
标签: bash if-statement awk