Awk-string-functions
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* はグローバル置換を表します。 出現するすべての正規表現を指定された文字列(サブ)に置き換えます。 3番目のパラメーターはオプションです。 省略すると、$ 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.
長さ(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)
この関数は、文字列 str を正規表現 regex によってフィールドに分割し、フィールドは配列 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の場合、8進数として扱われます。 strが先頭の0xまたは0Xで始まる場合、16進数として解釈されます。 それ以外の場合、10進数であると想定します。
例
[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)
この関数は、単一の置換を実行します。 最初に出現する正規表現パターンを指定された文字列(サブ)で置き換えます。 3番目のパラメーターはオプションです。 省略すると、$ 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)
この関数は、長さ l のインデックス start で始まる文字列 str の部分文字列を返します。 lengthを省略すると、インデックス 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 !!!