- AWK 教程
- AWK - 首頁
- AWK - 概述
- AWK - 環境
- AWK - 工作流程
- AWK - 基本語法
- AWK - 基本示例
- AWK - 內建變數
- AWK - 運算子
- AWK - 正則表示式
- AWK - 陣列
- AWK - 控制流
- AWK - 迴圈
- AWK - 內建函式
- AWK - 使用者自定義函式
- AWK - 輸出重定向
- AWK - 美化列印
- AWK 有用資源
- AWK - 快速指南
- AWK - 有用資源
- AWK - 討論
AWK - 字串函式
AWK 具有以下內建字串函式:
asort(arr [, d [, how] ])
此函式使用 GAWK 比較值的常規規則對arr的內容進行排序,並用從 1 開始的順序整數替換已排序值的arr的索引。
示例
[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代表全域性替換。它將regex的每次出現都替換為給定的字串 (sub)。第三個引數是可選的。如果省略,則使用$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)
此函式根據format返回從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)
此函式執行單個替換。它將regex模式的第一次出現替換為給定的字串 (sub)。第三個引數是可選的。如果省略,則使用$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 !!!