AWK具有以下内置String函数-
asort(arr [,d [,how]])
此函数使用GAWK的常规规则对 arr 的内容进行排序以比较值,并使用从1开始的连续整数替换排序后的值 arr 的索引。
[Learnfk]$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()的行为相同,除了将数组索引用于排序。
[Learnfk]$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 代表全局替换,它用 regex 替换每次出现的 sub ,第三个参数是可选的。如果省略,则使用$0。
[Learnfk]$awk 'BEGIN { str="Hello, Learnfk" print "String before replacement=" str gsub("Learnfk", "Learnfk", str) print "String after replacement=" str }'
在执行此代码时,您将获得以下输出-
String before replacement=Hello, Learnfk String after replacement=Hello, Learnfk
index(str,sub)
它检查 sub 是否为 str 的子字符串。成功时,它返回sub开始的位置;否则返回0。 str 的第一个字符位于位置1。
[Learnfk]$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)
它返回一个字符串的长度。
[Learnfk]$awk 'BEGIN { str="Hello, Learnfk !!!" print "Length=", length(str) }'
在执行此代码时,您将获得以下输出-
Length=16
match(str,regex)
它返回字符串 str 中 regex 的第一个最长匹配的索引。如果找不到匹配项,则返回0。
[Learnfk]$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。
[Learnfk]$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 构造的字符串。
[Learnfk]$awk 'BEGIN { param=1024.0 result=sqrt(param) printf "sqrt(%f)=%f\n", param, result }'
在执行此代码时,您将获得以下输出-
Hello, Learnfk !!!
strtonum(str)
此函数检查 str 并返回其数值,如果str以前导0开头,则将其视为八进制数,如果str以0x或0X开头,则将其视为十六进制数。否则,假定它是一个十进制数。
[Learnfk]$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)
此函数执行单次替换,它用 regex 代替了 sub 的第一个匹配项。第三个参数是可选的。如果省略,则使用$0。
[Learnfk]$awk 'BEGIN { str="Hello, Learnfk" print "String before replacement=" str sub("Learnfk", "Learnfk", str) print "String after replacement=" str }'
在执行此代码时,您将获得以下输出-
String before replacement=Hello, Learnfk String after replacement=Hello, Learnfk
substr(str,start,l)
此函数返回字符串 str 的子字符串,该字符串从长度为 l 的索引 start 开始。如果省略length,则返回从索引 start 开始的 str 后缀。
[Learnfk]$awk 'BEGIN { str="Hello, Learnfk !!!" subs=substr(str, 1, 5) print "Substring=" subs }'
在执行此代码时,您将获得以下输出-
Substring=Hello
tolower(str)
此函数返回字符串 str 的副本,并将所有大写字符转换为小写。
[Learnfk]$awk 'BEGIN { str="HELLO, Learnfk !!!" print "Lowercase string=" tolower(str) }'
在执行此代码时,您将获得以下输出-
Lowercase string=hello, Learnfk !!!
toupper(str)
此函数返回字符串 str 的副本,其中所有小写字符都转换为大写。
[Learnfk]$awk 'BEGIN { str="hello, Learnfk !!!" print "Uppercase string=" toupper(str) }'
在执行此代码时,您将获得以下输出-
Uppercase string=HELLO, Learnfk !!!
参考链接
https://www.learnfk.com/awk/awk-string-functions.html
标签:教程,arr,无涯,AWK,str,BEGIN,print,awk,Learnfk From: https://blog.51cto.com/u_14033984/7977186