AWK - 字符串函数
AWK 具有以下内置字符串函数 −
asort(arr [, d [, how] ])
此函数使用 GAWK 的常规值比较规则对 arr 的内容进行排序,并将排序后的值 arr 的索引替换为从 1 开始的连续整数。
示例
[jerry]$ awk 'BEGIN { arr[0] = "Three" arr[1] = "One" arr[2] = "Two" print "Array elements before sorting:" for (i in arr) { print arr[i] } asort(arr) print "Array elements after sorting:" for (i in arr) { print arr[i] } }'
在执行此代码时,您会得到以下结果 −
输出
Array elements before sorting: Three One Two Array elements after sorting: One Three Two
asorti(arr [, d [, how] ])
此函数的行为与 asort() 的行为相同,只是使用数组索引进行排序。
示例
[jerry]$ awk 'BEGIN { arr["Two"] = 1 arr["One"] = 2 arr["Three"] = 3 asorti(arr) print "Array indices after sorting:" for (i in arr) { print arr[i] } }'
在执行此代码时,您会得到以下结果 −
输出
Array indices after sorting: One Three Two
gsub(regex, sub, string)
gsub 代表全局替换。 它用给定的字符串(子)替换每一次出现的正则表达式。 第三个参数是可选的。 如果省略,则使用 $0。
示例
[jerry]$ awk 'BEGIN { str = "Hello, World" print "String before replacement = " str gsub("World", "Jerry", str) print "String after replacement = " str }'
在执行此代码时,您会得到以下结果 −
输出
String before replacement = Hello, World String after replacement = Hello, Jerry
index(str, sub)
它检查 sub 是否是 str 的子字符串。 成功时,它返回 sub 开始的位置; 否则返回 0。str 的第一个字符在位置 1。
示例
[jerry]$ awk 'BEGIN { str = "One Two Three" subs = "Two" ret = index(str, subs) printf "Substring \"%s\" found at %d location.\n", subs, ret }'
在执行此代码时,您会得到以下结果 −
输出
Substring "Two" found at 5 location.
length(str)
它返回字符串的长度。
示例
[jerry]$ awk 'BEGIN { str = "Hello, World !!!" print "Length = ", length(str) }'
在执行此代码时,您会得到以下结果 −
Length = 16
match(str, regex)
它返回字符串 str 中 regex 的第一个最长匹配的索引。 如果未找到匹配项,则返回 0。
示例
[jerry]$ awk 'BEGIN { str = "One Two Three" subs = "Two" ret = match(str, subs) printf "Substring \"%s\" found at %d location.\n", subs, ret }'
在执行此代码时,您会得到以下结果 −
输出
Substring "Two" found at 5 location
split(str, arr, regex)
该函数通过正则表达式 regex 将字符串 str 拆分为字段,并将字段加载到数组 arr 中。 如果省略 regex,则使用 FS。
示例
[jerry]$ awk 'BEGIN { str = "One,Two,Three,Four" split(str, arr, ",") print "Array contains following values" for (i in arr) { print arr[i] } }'
在执行此代码时,您会得到以下结果 −
输出
Array contains following values One Two Three Four
printf(format, expr-list)
该函数根据格式返回一个由 expr-list 构造的字符串。
示例
[jerry]$ awk 'BEGIN { param = 1024.0 result = sqrt(param) printf "sqrt(%f) = %f\n", param, result }'
在执行此代码时,您会得到以下结果 −
输出
sqrt(1024.000000) = 32.000000
strtonum(str)
此函数检查 str 并返回其数值。 如果 str 以前导 0 开头,则将其视为八进制数。 如果 str 以前导 0x 或 0X 开头,则将其视为十六进制数。 否则,假设它是一个十进制数。
示例
[jerry]$ awk 'BEGIN { print "Decimal num = " strtonum("123") print "Octal num = " strtonum("0123") print "Hexadecimal num = " strtonum("0x123") }'
在执行此代码时,您会得到以下结果 −
输出
Decimal num = 123 Octal num = 83 Hexadecimal num = 291
sub(regex, sub, string)
此函数执行一次替换。 它用给定的字符串(子)替换第一次出现的正则表达式模式。 第三个参数是可选的。 如果省略,则使用 $0。
示例
[jerry]$ awk 'BEGIN { str = "Hello, World" print "String before replacement = " str sub("World", "Jerry", str) print "String after replacement = " str }'
在执行此代码时,您会得到以下结果 −
输出
String before replacement = Hello, World String after replacement = Hello, Jerry
substr(str, start, l)
此函数返回字符串 str 的子字符串,从索引 start 开始,长度为 l。 如果省略长度,则返回从索引 start 开始的 str 后缀。
示例
[jerry]$ awk 'BEGIN { str = "Hello, World !!!" subs = substr(str, 1, 5) print "Substring = " subs }'
在执行此代码时,您会得到以下结果 −
输出
Substring = Hello
tolower(str)
此函数返回字符串 str 的副本,其中所有大写字符都转换为小写。
示例
[jerry]$ awk 'BEGIN { str = "HELLO, WORLD !!!" print "Lowercase string = " tolower(str) }'
在执行此代码时,您会得到以下结果 −
输出
Lowercase string = hello, world !!!
toupper(str)
此函数返回字符串 str 的副本,其中所有小写字符都转换为大写。
示例
[jerry]$ awk 'BEGIN { str = "hello, world !!!" print "Uppercase string = " toupper(str) }'
在执行此代码时,您会得到以下结果 −
输出
Uppercase string = HELLO, WORLD !!!