全部博文(2005)
分类:
2009-01-09 12:40:06
#!/usr/bin/awk -f function gliethttp_func(str) { # Arr[] len = length(str) pos = index(str, ".") # 找到 str1 = substr(str, pos) str2 = substr(str, pos, 3) # 只取3个 nums = split(str, l_Arr, /[lg.]/) # 这个Arr就是下面的Arr,所以变量一定要注意本地化 # split将从当前位置开始取字符串,直到遇上以上的字符,那么本次字符串取操作完成 # 存入数组,然后继续从下一个字符开始继续重复取字符串[luther.gliethttp] # split(str, Arr, ".") print str # 经过split分割之后生成的数组l_Arr,将以1...等数字下标开始 for (i in l_Arr) { printf("l_Arr[%d] = %s\n", i, l_Arr[i]) # printf("l_Arr[%s] = %s\n", i, l_Arr[i]) } print "======" for (i = 1; i <= nums; i++) { print l_Arr[i] } } function luther_func() { # arrays[] arrays[0,0] = "00" # awk只接受字符数组下标,所以这里数字0,0就已经被awk自动转换为"0\0340"了,因为SUBSEP默认为034 arrays[0,1] = "01" arrays[1,0] = "10" arrays[1,1] = "11" # idx = 2 SUBSEP 79 # print Arr[idx] for (i in arrays) { printf("arrays[%s] = %s\n", i, arrays[i]) } print "" # 加一个回车 for (i = 0; i < 2; i++) for (j = 0; j < 2; j++) { idx = i SUBSEP j # print arrays[idx] outs = sprintf("arrays[%s] = %s", idx, arrays[idx]) print outs } } BEGIN { a = 1 b = 1 Arr[0] = 12 Arr[1] = 34 Arr["luther"] = 1 # 这和python的字典很相似 Arr["hello"] = "yyyyy" srand() # 以系统时间为随机数启始的种子,或者strand(x)自己指定种子 for(i = 0; i < ARGC; i++) { printf("%d\n", rand()*100000) print rand() print int(rand()*1000) print ARGV[i] # 依次印出awk所记录的参数 } while (++x <= 10) { print a t = a a += b b = t } print Arr["luther"] print Arr["hello"] gliethttp_func("alutherb.cgdliethttp") delete Arr["luther"] # 释放数组元素"luther"占用的内存空间 delete Arr[0] for (i in Arr) { print Arr[i] } luther_func() exit 26 } END { print "Terminated" } |