Jquery中文網 www.2030036.live
Jquery中文網 >  腳本編程  >  shell  >  正文 awk基礎知識(11)-數組下標字符串化

awk基礎知識(11)-數組下標字符串化

發布時間:2014-08-17   編輯:www.2030036.live
awk數組下標字符串化

數組下標字符串化
雖然 awk 要執行必要的轉換來完成這項工作,但它卻可以使用某些看起來很奇怪的代碼:
a="1"
b="2"
c=a+b+3
執行了這段代碼后,c 等于 6。由于 awk 是“字符串化”的,添加字符串 "1" 和 "2" 在功能上并不比添加數字 1 和 2 難。這兩種情況下,awk 都可以成功執行運算。awk 的“字符串化”性質非??蓯?-- 您可能想要知道如果使用數組的字符串下標會發生什么情況。例如,以下代碼:
myarr["1"]="Mr. Whipple"
print myarr["1"]
可以預料,這段代碼將打印 "Mr. Whipple"。但如果去掉第二個 "1" 下標中的引號,情況又會怎樣呢?
myarr["1"]="Mr. Whipple"
print myarr[1]

猜想這個代碼片斷的結果比較難。awk 將 myarr["1"] 和 myarr[1] 看作數組的兩個獨立元素,還是它們是指同一個元素?答案是它們指的是同一個元素,awk 將打印 "Mr. Whipple",如同第一個代碼片斷一樣。雖然看上去可能有點怪,但 awk 在幕后卻一直使用數組的字符串下標!

了解了這個奇怪的真相之后,我們中的一些人可能想要執行類似于以下的古怪代碼:
myarr["name"]="Mr. Whipple"
print myarr["name"]

這段代碼不僅不會產生錯誤,而且它的功能與前面的示例完全相同,也將打印 "Mr. Whipple"!可以看到,awk 并沒有限制我們使用純整數下標;如果我們愿意,可以使用字符串下標,而且不會產生任何問題。只要我們使用非整數數組下標,如 myarr["name"],那么我們就在使用關聯數組。從技術上講,如果我們使用字符串下標,awk 的后臺操作并沒有什么不同(因為即便使用“整數”下標,awk 還是會將它看作是字符串)。但是,應該將它們稱作關聯數組 -- 它聽起來很酷,而且會給您的上司留下印象。字符串化下標是我們的小秘密。;)

數組工具
談到數組時,awk 給予我們許多靈活性??梢允褂米址聵?,而且不需要連續的數字序列下標(例如,可以定義 myarr[1] 和 myarr[1000],但不定義其它所有元素)。雖然這些都很有用,但在某些情況下,會產生混淆。幸好,awk 提供了一些實用功能有助于使數組變得更易于管理。

首先,可以刪除數組元素。如果想要刪除數組 fooarray 的元素 1,輸入:
delete fooarray[1]

而且,如果想要查看是否存在某個特定數組元素,可以使用特殊的 "in" 布爾運算符,如下所示:
if ( 1 in fooarray ) {
print "Ayep!  It's there."
} else {
   print "Nope!  Can't find it."
}

您可能感興趣的文章:
bash中too many arguments問題的解決方法
AWK 簡介與例子
bash shell腳本執行的幾種方法
awk基礎知識(11)-數組下標字符串化
awk基礎知識(2)-處理多個字段
awk基礎知識(12)-格式化輸出
awk基礎知識(13)-字符串函數
awk基礎知識(1)-使用規則
awk基礎知識(7)-變量
Linux awk 命令

[關閉]
888棋牌金花app 时时彩开奖赛车微彩app 河北省20选五开奖结果 河南快三一定牛 盈策略 pc蛋蛋幸运28大小预测 广西11选5有软件买的吗 宁夏11选五彩票平台 陕西快乐10分网站 北京快中彩软件下载 宁夏11选5开奖结果