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)

它返回字串strregex第一個最長匹配項的索引。如果未找到匹配項,則返回 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 !!!
awk_built_in_functions.htm
廣告

© . All rights reserved.