引言
- 本文主要补充介绍AWK中的
语句的定义以及一些内置变量(不包含前面已经介绍的常用内置变量),仅供参考。
- 本文介绍的主要的内置变量是RLENGTH与RSTART
内置变量RLENGTH与RSTART
- RLENGTH和RSTART是在awk程序中用来处理正则表达式匹配的两个特殊变量,都是与match函数相关的,且与match函数搭配使用以在字符串中查找匹配的子串。
- RLENGTH表示字符串中符合正则表达式模式的子串的长度
- 注:RLENGTH是一个变量。当你使用 match() 函数时,它会自动设置为匹配子串的长度。如果没有找到匹配,RLENGTH 的值为 -1。
- RSTART表示字符串中符合正则表达式模式的子串的起始位置
- RSTART也是一个变量,当你使用 match() 函数时,它会自动设置为匹配子串在字符串中的起始位置。如果没有找到匹配,RSTART 的值为 0。
— 下图可以数一下,起始索引位置确实是第23,从1开始数且空格是计入索引位置的
awk 'BEGIN {match("hello,world is say by GPT-4", /GPT-4/); print "RSTART:"RSTART,"RLENGTH:"RLENGTH}'

语句(Statement)
- 在awk中,语句是指一个完整的执行单元,可以是单个命令或一组命令的组合。
- awk程序由一系列语句组成,每个语句都由一个或多个动作组成。
- 通俗举例就是如下:
- 基本语句是awk中最简单的语句,由一个pattern和一个action组成
- 如:
echo "1" | awk -F: '{print $1}'
- 条件语句:就是if-else条件判断语句
if (condition) { action } else { action }
- 循环语句:for,while等循环
for (i = 1; i <= 10; i++) { print i }
- 补:关于printf语句像函数一样调用
- 目前为止用的比较多的语句就是
print,除此之外还有printf,delete,continue exit等,这些语句与函数不同,他们一般不带括号,也就不会在括号里写参数,而且是没有返回值的,但是printf有时候却可以像函数一样调用
echo 1 | awk '{printf("%s\n", "abc")}'

- 在awk中,printf是一种特殊的语句,用于格式化输出。printf的语法格式与函数调用非常相似,因此在使用printf时可以像调用函数一样传递参数