2024年4月29日发(作者:)

gawk 语法

1. 什么是 gawk

Gawk 是 GNU Awk 的缩写,是一种强大的文本处理工具。它是 Awk 的一个实现,

Awk 是一种用于处理文本和数据流的编程语言。

Gawk 提供了丰富的功能和语法,使得它成为处理大型数据集的理想工具。它可以

用于数据转换、提取和分析等任务。

2. gawk 的基本用法

2.1 命令行模式

Gawk 可以在命令行上直接执行命令,如下所示:

gawk 'pattern { action }' file

其中,

pattern

是一个正则表达式,用于匹配输入文件中的行,

action

是一系列的

命令,用于对匹配的行进行操作,

file

是输入文件的名称。

例如,我们可以使用以下命令来打印文件中包含 “hello” 的行:

gawk '/hello/ { print }'

2.2 脚本模式

除了命令行模式,Gawk 还支持脚本模式。可以将一系列的 Gawk 命令保存到一个

脚本文件中,然后使用以下命令来执行脚本:

gawk -f file

其中,

是保存 Gawk 命令的脚本文件。

3. gawk 的语法

3.1 变量

Gawk 支持多种类型的变量,包括字符串、数字和数组。变量在使用前不需要声明,

可以直接赋值。

以下是一些常用的变量操作:

赋值:

var = value

打印变量的值:

print var

数字运算:

var = var1 + var2

字符串连接:

var = var1 var2

数组操作:

array[index] = value

3.2 条件语句

Gawk 支持条件语句,用于根据条件执行不同的操作。

以下是一些常用的条件语句:

if

语句:用于判断条件是否成立,如果条件为真,则执行相应的操作。

else

语句:可选的,用于在条件不成立时执行其他操作。

else if

语句:可选的,用于在多个条件之间进行判断。

例如,以下代码根据变量的值输出不同的消息:

if (var == 1) {

print "变量的值为 1"

} else if (var == 2) {

print "变量的值为 2"

} else {

print "变量的值不是 1 或 2"

}

3.3 循环语句

Gawk 支持多种类型的循环语句,用于重复执行一系列的操作。

以下是一些常用的循环语句:

for

循环:用于按照指定的条件重复执行操作。

while

循环:用于在条件为真时重复执行操作。

do while

循环:用于先执行一次操作,然后在条件为真时重复执行操作。

例如,以下代码使用

for

循环打印数字 1 到 10:

for (i = 1; i <= 10; i++) {

print i

}

3.4 函数

Gawk 支持自定义函数,用于封装一系列的操作。

以下是一个简单的函数示例:

function add(a, b) {

return a + b

}

result = add(1, 2)

print result

上述代码定义了一个名为

add

的函数,接受两个参数并返回它们的和。然后,我

们调用该函数并打印结果。

4. gawk 的高级用法

4.1 正则表达式

Gawk 支持正则表达式,用于匹配和处理文本。

以下是一些常用的正则表达式操作:

~

运算符:用于判断字符串是否匹配正则表达式。

!~

运算符:用于判断字符串是否不匹配正则表达式。

sub

函数:用于替换字符串中的第一个匹配项。

gsub

函数:用于替换字符串中的所有匹配项。

例如,以下代码使用正则表达式匹配包含 “hello” 的行,并将其替换为

“world”:

gsub(/hello/, "world")

4.2 内置变量

Gawk 提供了一些内置变量,用于获取有关输入文件和运行环境的信息。

以下是一些常用的内置变量:

NR

:当前行号。

NF

:当前行的字段数。

FILENAME

:当前输入文件的名称。

FS

:字段分隔符。

RS

:记录分隔符。

例如,以下代码使用内置变量

NF

打印每行的字段数:

{ print NF }

4.3 输出格式化

Gawk 提供了丰富的输出格式化选项,用于控制输出的样式和布局。

以下是一些常用的输出格式化操作:

printf

函数:用于按照指定的格式打印输出。

sprintf

函数:用于将格式化的字符串保存到变量中。

控制符号:用于指定输出的宽度、精度和对齐方式。

例如,以下代码使用

printf

函数按照指定的格式打印输出:

printf "%-10s %10sn", "Name", "Age"

printf "%-10s %10dn", "Alice", 25

printf "%-10s %10dn", "Bob", 30

5. 总结

本文介绍了 gawk 的基本用法和语法。我们了解了 gawk 的命令行模式和脚本模式,

并学习了 gawk 的变量、条件语句、循环语句和函数等基本语法。此外,我们还了

解了 gawk 的高级用法,包括正则表达式、内置变量和输出格式化等功能。

通过深入学习和实践 gawk,我们可以更好地处理和分析文本数据,提高工作效率。

希望本文对您理解和使用 gawk 有所帮助。