AWK中的内置变量与函数:理解FS、NF等常用变量与数学运算

编程艺术家 2019-03-27 ⋅ 27 阅读

AWK是一种强大的文本处理工具,它提供了丰富的内置变量与函数,用于处理文本数据。本文将介绍一些常用的内置变量与函数,包括FS、NF以及一些常见的数学运算。

FS变量

FS变量(Field Separator)用于指定字段的分隔符。默认情况下,FS的值是空格或制表符。当对文本进行处理时,可以通过修改FS变量来指定不同的字段分隔符。

例如,假设我们有一个包含逗号分隔符的文本文件data.csv

姓名,年龄,性别
张三,25,男
李四,30,女
王五,28,男

在AWK中,可以通过修改FS变量为逗号来指定字段分隔符:

BEGIN {
    FS = ","
}

{
    print "姓名:" $1
    print "年龄:" $2
    print "性别:" $3
}

输出结果:

姓名:张三
年龄:25
性别:男

姓名:李四
年龄:30
性别:女

姓名:王五
年龄:28
性别:男

NF变量

NF变量(Number of Fields)用于指示当前记录(行)中字段的数量。它是一个只读变量,用于在处理文本时快速获取字段数量。

例如,假设我们有一个包含两个字段的文本文件:

apple orange
banana grape

可以通过在AWK中使用NF变量来打印每行的字段数量:

{
    print "行号:" NR
    print "字段数量:" NF
    print "第一个字段:" $1
    print "第二个字段:" $2
    print "----------------------"
}

输出结果:

行号:1
字段数量:2
第一个字段:apple
第二个字段:orange
----------------------
行号:2
字段数量:2
第一个字段:banana
第二个字段:grape
----------------------

数学运算

AWK还提供了一些常见的数学运算函数,以便更方便地对文本数据进行计算和处理。

sqrt函数

sqrt(x)函数用于计算给定数值x的平方根。例如,假设我们要计算1到10的平方根:

BEGIN {
    for (i = 1; i <= 10; i++) {
        print i, "的平方根是", sqrt(i)
    }
}

输出结果:

1 的平方根是 1
2 的平方根是 1.41421
3 的平方根是 1.73205
4 的平方根是 2
5 的平方根是 2.23607
6 的平方根是 2.44949
7 的平方根是 2.64575
8 的平方根是 2.82843
9 的平方根是 3
10 的平方根是 3.16228

int函数

int(x)函数用于返回不大于x的最大整数。例如,假设我们要取下述数据的整数部分:

3.14
2.718
5.5

可以在AWK中使用int函数进行处理:

{
    print "原数值:" $1
    print "整数部分:" int($1)
    print "----------------------"
}

输出结果:

原数值:3.14
整数部分:3
----------------------
原数值:2.718
整数部分:2
----------------------
原数值:5.5
整数部分:5
----------------------

总结

本文介绍了AWK中的一些常用内置变量与函数,包括FS、NF以及一些常见的数学运算函数。通过理解和运用这些变量和函数,我们可以更加方便、高效地处理文本数据,提高工作效率。希望本文对你达到了帮助,谢谢阅读!


全部评论: 0

    我有话说: