技巧 AWK 關聯陣列的乙個應用

2021-04-19 21:38:30 字數 1502 閱讀 1178

本文通過乙個例項闡述了 awk 關聯陣列的應用,讀者可以通過這篇文章得到理論和實踐兩方面的知識,例子很簡單,希望這篇文章能起到拋磚引玉的作用。
awk、awk 關聯陣列(associative arrays)

awk是一種優秀的文字處理工具,它不僅是 linux 中也是很多其它 unix 環境中現有的功能最強大的資料處理工具之一。awk 提供了極其強大的功能:可以進行樣式裝入、流控制、數**算、程序控制語句以及內建的變數和函式。它具備了乙個完整語言所具有的幾乎所有特性。 在 awk 中陣列叫做關聯陣列(associative arrays),因為下標記可以是數也可以是串。awk 中的陣列不必提前宣告,也不必宣告大小。陣列元素用 0 或空串來初始化,這根據上下文而定。例如:

1:可以用數值作陣列索引(下標)

myarray[1]=」xu sihua」

myarray[2]=」780927」

2:可以用字串作陣列索引(下標)

myarray[「first」]=」xu」

myarray[「last」]=」si hua」

myarray[「birth」]=」780927」

使用中 print myarray[1] 將得到」xu sihua」 而 print myarray[2] 和 print[「birth」] 都將得到 」780927」 。

回頁首

問題的提出

在我們的生產系統中有乙個應用每天都有大量的資料庫插入操作,這些操作被記錄在了日誌檔案中,而我們的目的就是從這些日誌檔案中提取所需要的資料。日誌檔案的資料格式如下:

--sert into table_a ( field1,field2,field3 ...) values ( 3,1,'xx',...) ;

--sert into table_a ( field4,field1,field2 ...) valuse ( 'yyy',2,675 ,...);

--sert into table_a ( field1,field8,fieldn ...) valuse ( 'zzz','ccc','eee' ,...);

其中 field1、field2、fieldn 等是資料庫表 table_a 中的字段,每條語句中的字段數不定,順序也不定,但是所有的字段都是表 table_a 內的字段,values 中的值有字串也有整數。我想通過上面的檔案產生下面格式的資料:

field1_value|field2_value|field3_value|.....|fieldn_value|

field1_value|field2_value|field3_value|.....|fieldn_value|

field1_value|field2_value|field3_value|.....|fieldn_value|

本文**ibm developerworks中國

shell 之awk 關聯陣列高階應用

最近由於資料遷移過,有些使用者資訊需要再次確認下,也許資料量比較大,但是需要最終確認的比如說是使用者id和其對應的使用者積分數,這樣就會導致出現文字a 老的資料 文字b 新的資料 比如 1101 1231102 1111103 1451104 152 這是文字a.txt 文字b.txt如下 1101...

linux下awk的關聯陣列

昨天看了同事的乙個shell指令碼,如下 awk nr fnra 1 0 a.txt b.txt 作用是 列印出b.txt第一列中不在a中行,初一看,不是很懂,shell指令碼沒有系統的學過,平時用也只是一些簡單的執行下可執行程式,跑下定時任務 nr和fnr,nr列印行數,fnr同樣是列印行數,區別...

PHP關聯陣列的10個操作技巧

什麼是陣列?在使用 php 進行開發的過程中,或早或晚,您會需要建立許多相似的變數。無需很多相似的變數,你可以把資料作為元素儲存在陣列中。陣列中的元素都有程式設計客棧自己的 id,因此可以方便地訪問它們。關聯陣列 關聯陣列,它的每個 id 鍵都關聯乙個值。在儲存有關具體命名的值的資料時,使用數值陣列...