Awk与Sed脚本的使用限制及示例解析
1. Awk实现的限制
在任何awk实现中都存在固定的限制,但文档中很少提及这些限制。以下是一些常见的限制列表:
| 项目 | 限制 |
| — | — |
| 每条记录的字段数 | 100 |
| 每个输入记录的字符数 | 3000 |
| 每个输出记录的字符数 | 3000 |
| 每个字段的字符数 | 1024 |
| 每个printf字符串的字符数 | 3000 |
| 字面字符串的字符数 | 400 |
| 字符类中的字符数 | 400 |
| 打开的文件数 | 15 |
| 打开的管道数 | 1 |
需要注意的是,尽管表格中显示打开的管道数限制为1,但经验表明,大多数awk允许打开多个管道。在数值方面,awk使用双精度浮点数,其大小受机器架构的限制。
当脚本运行触及这些限制时,可能会导致意外问题。例如,曾经有人开发了一个搜索程序,用于在单个段落中查找单词或单词序列。该程序将文档作为多行记录读取,如果任何字段包含搜索词,则打印该记录(即一个段落),可用于搜索邮件文件。该程序在小测试文件上运行良好,但在大文件上运行时,由于遇到的段落超过了最大输入记录大小(3000字符),程序崩溃。而且,没有特定的错误消息提示问题是当前记录的大小。
不过,gawk和mawk没有如此小的限制。例如,gawk中记录的字段数限制为C语言中long类型所能表示的最大值,记录长度肯定可以超过3000字符,并且这些版本允许打开更多的文件和管道。此外,贝尔实验室awk的最新版本有两个选项 -mf N 和 <
超级会员免费看
订阅专栏 解锁全文
1202

被折叠的 条评论
为什么被折叠?



