一、定義
在 awk
中,陣列是關聯陣列,它的特點是:
1、 陣列的下標可以是整數,也可以是負數甚至是字串
2、 陣列的下標可以不連續。
awk
的變數
ignorecase
的值不影響陣列下標。
當 awk
建立乙個陣列的時候,如果沒有指定下標,預設已連續整數作為下標,起始值是
1. awk
的陣列是什麼高效的,訪問乙個元素的時間跟元素的數量無關。
注: awk
的下標其實都是字串
,如我們輸入的是數字 1
, awk
會自動的轉換為字串
「 1 」
。 二、
引用元素
引用 awk
元素的基本方法是:
array[index]
注: 在此引用方式中除非 [ ]
中寫的是變數,否則需要新增雙引號,即字串必需新增雙引號的規則在陣列的下標中也必需遵守,但如果下標是全數字,則可以不加引號,例:
bb=「123」
arr[bb] awk
將 bb
認作變數,獲取的是
arr[「123」]
的值 arr[234] awk
將 234
認作字串,雖然
234
沒加引號。因為變數的定義不能用全數字,所以
234
肯定是字串,而不是變數。
arr[「 bb」 ] awk
將 bb
認作字串,獲取的是
arr[「bb」]
的值 有時候,陣列的 value
會為空。
value
為空的元素包含兩種情況:1
、本身
value 為空;
2 、通過
delete
刪除後的元素。這兩種情況都可以被正常引用。但不幸的是,如果引用了乙個不存在的元素,會導致
awk
建立這個元素,
value
為空,這樣,會導致
awk
的記憶體浪費。
如果要查詢具有某個 index
值的元素是否存在可以用如下的表示式:
index in array
這個表示式僅僅測試具有 index
的元素在
array
中是否存在。如果不存在,該表示式不會導致產生以
index
為下標的
value
為空的元素。
如果元素存在,該表示式返回值 1
( true
)
反之,返回 0
( false
)
例:測試在陣列 frequencies
中是否存在下標為 2
的元素
if (2 in frequencies)
print 「sub 2 is present.」
注: 不能測試 frequencies
中是否存在
value
為 2
的元素,除非
scan
陣列中的所有元素。
三、給元素賦值
給 awk
的陣列賦值,只能採用如下形式:
array[sub] = value
array
:陣列名字
sub
:下標 value
:值 注: awk
可以生成下標為空的元素,但是引用方式必需是
arr[ 「」 ],
而不是
arr。
length(a)
求得陣列中元素的個數。
四、遍歷陣列
在使用陣列的程式裡,經常會使用乙個迴圈讓陣列裡的每乙個元素都執行一次某乙個操作。在其他程式裡,陣列的下標是連續的正整數,因此所有的下標很容易通過從低到高實現遍歷。但這個方法在
awk
裡不能使用,因為
awk
的下標可以是數字也可以是字串。因此,
awk
使用一種特別的語句來遍歷陣列裡的元素:
for (var in array)
body
以上的迴圈將實現讓陣列
array
裡的每乙個元素都執行一次
body
。 以下程式的第一部分,將輸入文字的每乙個單詞都作為下標存放入陣列,如單詞有重複,僅僅保留乙個,因陣列的下標是不能重複的。
五、刪除元素
刪除單個元素
delete array[index]
刪除整個陣列方法
1 for (var in array)
delete array[var]
刪除整個陣列方法
2 (該方法
gawk
專用,可移植性差,但效率是方法
1 的
3 倍左右)
delete array
awk
a[1] = 3; delete a; a = 3
六、陣列賦值
單個賦值:
tarray[1]=
"cheng mo
"tarray[2]=
"800927
" 多個賦值:
awk 'begin'
原文:
awk陣列簡介
一 定義 在 awk 中,陣列是關聯陣列,它的特點是 1 陣列的下標可以是整數,也可以是負數甚至是字串 2 陣列的下標可以不連續。awk 的變數 ignorecase 的值不影響陣列下標。當 awk 建立乙個陣列的時候,如果沒有指定下標,預設已連續整數作為下標,起始值是 1.awk 的陣列是什麼高效...
awk命令簡介
awk是乙個強大的文字分析工具,相對於grep的查詢,sed的編輯,awk在其對資料分析並生成報告時,顯得尤為強大。簡單來說awk就是把檔案逐行的讀入,以空格為預設分隔符將每行切片,切開的部分再進行各種分析處理。awk有3個不同版本 awk nawk和gawk,未作特別說明,一般指gawk,gawk...
awk命令簡介
在shell命令或程式設計中,可以用awk強大的的文字處理能力。如果要格式化報文或從乙個大的文字檔案中抽取資料報,那麼awk可完成這些任務。awk是一種解釋的程式語言。awk也是shell過濾工具中最難掌握的。awk是一種自解釋的程式語言。結合awk和sed和grep,將會使awk程式設計更加容易。...