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