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某列重複行 首先建立乙...