awk陣列簡介

2021-09-06 07:28:34 字數 2761 閱讀 3831

一、定義

在 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]

刪除整個陣列方法

1for (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程式設計更加容易。...