awk:split()函数、数组、自定义函数
測試關系數組下標是否存在,經測試無法使用 for,使用if
? ? ? ?if ("D" in num_grade)
? ? ? ? ? ? ? ?print "find ok"
? ? ? ?else
? ? ? ? ? ? ? ?print "error"
注:在關系數組中,所有的下標都被認為是字符串。可以使用數值或者是字符,不能是實數(如:data[1.23]="3.21"),即使下標是數值也被awk轉換為字符串。
數組、函數split()
1、split()創建數組(下標從1開始),語法:
n = split(string, array, separator)
注:n為split返回的分割的數據元素的個數(訪問最后一個元素array[n]);如果不指定separator,則使用FS;separator可以是正則表達式。
split("a,b,c",array,",")
split($1,array,"\t")
例:在獲取流量的時候,如果想保證lo可以像其它網卡一樣使用$2獲取接收流量,需要使用以下正則
split(line,run,": +|:| +")
run[2]的值為5697
2、刪除數組元素
?delete array[1]
3、多維數組同樣支持測試下標語法:if ((i,j) in array)
注:i和j默認使用SUBSEB值(\0344)來分隔
4、系統變量數組
?ARGV和其它數組不同,該數組第一個數組元素下標為0,最后一個為ARGV-1;參數個數變量為 ARGC
?ENVIRON值為當前環境變量的值,下標為變量名
補充1:自定義函數
awk自定義函數語法:
function name(parameter-list) {
statements
}
注:
1、函數內部的變量如果不在parameter-list的參數列表中指定,默認為全局變量;
2、指定多個參數使用逗號分開,一般情況下傳遞給函數的參數與函數的局部變量用多個空格分開,如:
function sort(ARRAY, NUM, ?i, j, tmp) {
......
}
3、通常使用return返回一個值(注:對數組的操作不需要return expression返回值,因為函數對數組的任何操作在函數外部都是可見的。)
轉載于:https://blog.51cto.com/sndapk/1220357
總結
以上是生活随笔為你收集整理的awk:split()函数、数组、自定义函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 速途网范锋:我的创业路早已命中注定
- 下一篇: 小波变换和motion信号处理(二)【转