awk 陣列例項

2021-09-06 07:27:33 字數 1599 閱讀 6171

awk

陣列例項

awk的陣列,一種關聯陣列(

associative arrays

),下標可以是數字和字串。因無需對陣列名和元素提前宣告,也無需指定元素個數 ,所以

awk的陣列使用非常靈活。

首先介紹下幾個awk

<1>

建立陣列

array[index] = value

:陣列名

array

,下標index

以及相應的值

value

。<2>

讀取陣列值

# 輸出的順序是隨機的

# len

是陣列的長度

<3>

多維陣列,

array[index1,index2,……]

:subsep

是陣列下標分割符,預設為

「\034」

。可以事先設定

subsep

,也可以直接在

subsep

的位置輸入你要用的分隔符,如:

awk 'begin'

a:bawk 'begin'

a:b但,有些特殊情況需要避免,如:

awk 'begin'

a:b:c 2                        #

所以陣列元素只有乙個。

<4>

刪除陣列或陣列元素: 使用

delete

函式delete array                     #

刪除整個陣列

delete array[item]           #

刪除某個陣列元素(

item

)<5>

排序:awk

中的asort

函式可以實現對陣列的值進行排序,

不過排序之後的陣列下標改為從1

到陣列的長度。

在gawk 3.1.2

以後的版本還提供了乙個

asorti

函式,這個函式不是依據關聯陣列的值,而是依據關聯陣列的下標排序,即

asorti(array)

以後,仍會用數字(

1到陣列長度)來作為下標,但是

array

的陣列值變為排序後的原來的下標,除非你指定另乙個引數如

:asorti(a,b)

。(非常感謝

lionfun

對asorti

的指正和補充)

cat test

2 d3 t

6 a8 b

g um c

0 d5 e

awk 'end' test

1 02 2

3 34 5

5 66 8

7 g8 m

awk 'end' test

#利用asort

函式對陣列

a的值排序,同時獲得陣列長度

len1 0 d

2 2 d

3 3 t

4 5 e

5 6 a

6 8 b

7 g u

8 m c

原文:

AWK簡單例項

摘自 http bbs.xplore.awk是一種模式掃瞄合處理語言,其名稱來自最初的作者alfred v.aho,perter j.weinberger和brian w.kernighan的字母縮寫,最早的awk是在at t的bell實驗室發明的。linux下面使用的awk是gnu awk。awk...

AWK使用例項

在awk中,可以用!a 0 做為 條件,對 重複出現 的行進行 處理。b ash 3.2 cat 2 abc abc ef 123 dgag 123 bash 3.2aw k a 0 2 abc ef 123 dgag 對於awk a 3 需要了解3個知識點 1 awk陣列知識,不說了 2 awk的...

awk 統計例項

個人比較懶,慢慢加了 一點一點重新做下記錄,時間久不用都忘記了 一 如 新建乙個a檔案,內容如下 1,5 1,2,3,4,5 1,2,3,4,5,1,5,5,5 1然後awk f end a 輸出為 1,2 1,52 第一列為1的出現4次,第五列為5 的出現2次 二 去除awk某列重複行 首先建立乙...