-
在 AWK 中,陣列是關聯陣列,其特徵在於:
1. 陣列的下標可以是整數、負數甚至字串 2。陣列的下標可以是不連續的。
如果你了解 Python,你可以把它看作是 Python 中的字典。
1.就是為每門課程建立乙個計數器,讀一次,在計數器上加乙個,如果沒有課程,建立計數器的值並將其設定為1
它基於 C 語言,它應該類似於 C 機制。 您可以找到有關詳細資訊的資訊。
這意味著陣列 a 中索引為 $3 的元素本身被分配了 $3。 $3 這裡是每行的第三個字段,如果是第一行,則為“os”。
-
1.這怎麼能是統計的?
number[$i]++ 首先將所有值相加。
然後將輸出分類為 for(number in course)。
陣列的機制是什麼樣的? 例如,a[key]=1,它的鍵和 1 是如何儲存的?
遇到同樣的積攢1,不知道裡面是怎麼收納的,3如果 a[$3]=$3 是什麼意思?
這並不意味著什麼。
-
awk 的陣列實際上很容易理解。 在一般程式語言中,陣列的下標只能是乙個數字,例如 a[3],它表示陣列 a 的第四個元素。
但是,與 AWK 不同的是,下標可以是任何字元或字串。 例如,a[bob] 表示陣列 a 的元素,它有乙個下標"bob"。
a 1b 2
c 3a 4
b 5a 6
如果我們想計算以 a 開頭的行之後的數字之和,即“1+4+6”,我們如何使用 awk:
cat | awk ‘
elae}end’
命令中有乙個陣列,當讀取第一行時,$1 是 “a”,array[a] 以 “”(空字串)開頭,所以! array[a] 為 true,則 array[a]=1,並且該陣列具有第乙個元素 array[a]。
同理,讀取第二行後,結果是 array[a]=1,array[b]=2,陣列有 2 個元素。
在第三行之後,結果是 array[a]=1,array[b]=2,array[c]=3,陣列有 3 個元素。
在第四行之後,結果是 array[a]=5(1+4,4 在第四行是 $2),array[b]=2,array[c]=3
在第五行之後,結果是 array[a]=5, array[b]=7, array[c]=3
在第六行之後,結果是 array[a]=11, array[b]=7, array[c]=3
end 表示在讀取檔案的所有行後,執行的語句列印出陣列的第乙個元素 Array[A]。
-
awk 陣列不是傳統意義上的陣列,所以一開始很難理解。 awk的陣列其實就是乙個字典,它叫雜湊表,雜湊表等等,是一回事。 如果你把關鍵和價值理解得好,你自然會明白。
-
當你學習AWK時,以前的基礎是什麼? AWK是一種動態執行語言,沒有型別這樣的東西,所以裡面可以呼叫任何東西。
-
AWK 逐行處理文字資料。
AWK 中的術語將行稱為記錄; 還可以根據分隔符將記錄拆分為多個字段。
0 表示整行(一條記錄)。
a[$0]++ 用於分別計算不同數量的記錄。 也就是說,將相同的 $0 內容相加。
示例:檔案的內容為:
111 abc
222 abc
333 efg
要獲得以下結果(即,計算第二個字段出現的次數):
abc 2efg 1
這可以用 awk 這樣寫:
awk ' end'
解析:$2 表示第二個字段,w[abc] 表示 abc 出現的次數,w[efg] 表示 efg 出現的次數。 當 $2=abc 時,新增 w[abc]; 當 $2=efg 時,將 w[efg] 相加。
這樣,w 是所有 $2 欄位的集合,最後通過 for 迴圈列印出每個欄位的出現次數。
實際上,如果你真的理解了這一點,互相推論,其他一切都會如此。
首先,我會明確地告訴你,選項 c 是正確的,選項 A strcpy 是乙個字串複製函式,它可以將字串 “China” 複製到字元陣列 str2 中並覆蓋 str1 中的 “beijing”,選項 c strcat 是乙個字串連線函式,可以將 “China” 連線到“beijng”的後面。 因此,C. >>>More