AWK 中的内置函数
AWK 有许多用于数字、字符串、输入和输出操作的内置函数。 awk 有以下两种高级内置函数类别:
- 用于数字运算的内置函数。
- 用于字符串操作的内置函数。
先决条件 - Unix/Linux 中的 AWK 命令
数字运算的内置函数
1. awk int(n)函数: int()函数为我们提供给定参数的整数部分。这将产生给定 n 的最小整数部分。 n 是任何带或不带浮点数的数字。如果您将整数作为参数,则此函数返回相同的值。
- 例子:
Input : $ awk 'BEGIN{print int(3.534);print int(4);print int(-5.223);print int(-5);}'
Output : 3
4
-5
-5
2. awk log(n)函数: log()函数提供给定数量 n 的自然对数(以e为底)。 log() 仅当 n 为正数时才返回对数值。如果我们给出任何无效的数字(甚至是负数),它就会抛出一个错误。
- 例子:
Input : $ awk 'BEGIN{print log(3.534);print log(4);print log(0);print log(-5);print log(-1);}'
Output : 1.26243
1.38629
-inf
awk: cmd. line:1: warning: log: received negative argument -5
nan
awk: cmd. line:1: warning: log: received negative argument -1
nan
解释:当给定零时返回-inf 并在给定负数时给出 nan 错误。
3. awk sqrt(n)函数: sqrt()函数给出给定整数 n 的正根。此函数也接受正数。
- 例子:
Input : $ awk 'BEGIN{print sqrt(16);print sqrt(0);print sqrt(-12);}'
Output : 4
0
awk: cmd. line:1: warning: sqrt: called with negative argument -12
-nan
说明:如果我们给负数作为参数,它会返回nan错误。
4. awk sin(n)函数: sin()函数给出 n 的正弦值, n 以弧度表示。
- 例子:
Input : $ awk 'BEGIN{print sin(-60);print sin(90);print sin(45);}'
Output :0.304811
0.893997
0.850904
5. awk cos(n)函数: cos()函数给出n 的余弦值, n 以弧度表示。
- 例子:
Input : $ awk 'BEGIN{print cos(-60);print cos(90);print cos(45);}'
Output :-0.952413
-0.448074
0.525322
字符串操作的内置函数
1. AWK指数(STR1,STR2)函数:该搜索字符串STR1的字符串STR2的第一事件,并返回以字符,其中该发生在字符串STR1开始的位置。 awk 中的字符串索引从 1 开始。
- 例子:
Input: awk 'BEGIN{print index("Graphic", "ph"); print index("University", "abc")}'
Output: 4
0
说明:如果在 str1 中找不到 str2,则返回 0。
2. awk length(字符串)函数: length()函数计算字符串的长度。
- 例子:
Input: $ awk 'BEGIN{print length("Graphic Era University")}'
Output: 22
说明:字符串的长度也包括空格。
3. awk substr(s, p, n)函数: length()函数用于从字符串提取子串函数。在起始位置p处返回字符串s 的子字符串,最大长度为n 。如果未提供n ,则使用来自p的字符串的其余部分。
- 例子:
Input: $ awk 'BEGIN{print substr("Graphic Era University", 9)}'
Output: Era University
Input: $ awk 'BEGIN{print substr("Graphic Era University", 9, 8)}'
Output: Era Univ
4. awk tolower(s)函数:将字符串s中的所有大写字符转成小写,并返回新的字符串。
- 例子:
Input: $ awk 'BEGIN{print tolower("GEEKSFORGEEKS")}'
Output: geeksforgeeks
5. awk toupper(s)函数:将字符串s中的所有小写字符转成大写,并返回新的字符串。
- 例子:
Input: $ awk 'BEGIN{print toupper("geeksforgeeks")}'
Output: GEEKSFORGEEKS
6. awk split(字符串, array, fieldsep)函数:将字符串分成由fieldsep分隔的部分,并将这些部分存储在array 中。第一部分存储在array[1] 中,第二部分存储在array[2] 中,依此类推。第三个参数fieldsep的字符串值描述了在何处拆分字符串 。
- 例子:
Input: $ awk 'BEGIN{string="My Nationality Is Indian"; fieldsep=" "; n=split(string, array, fieldsep); for(i=1; i<=n; i++){printf("%s\n", array[i]);}}'
Output: My
Nationality
Is
Indian
说明:上述脚本将句子分解为单词,使用空格作为分隔单词的字符。