2017-06-19 158 views
0

我輸入的數據是一樣awk允許關聯數組包含值作爲數組?

key1 value1 
key2 value2 value3 value4 
key1 value3 

我的預計產量將

key1: value1 value3 
key2: value2 value3 value4 

我想使用關聯地圖從關鍵的陣列。但似乎這是不允許的。我使用以下,但始終執行出現錯誤:

function alen(a) { 
    k = 0 
    for(i in a) k++ 
    return k 
} 

BEGIN{} 
{ 
    mylist=mymap[$1]; 
    mylist[alen(mylist)+1]=$2; 
    <==fatal: attempt to use scalar parameter `a' as an array 

    mymap[$1]=mylist; 
} 

的錯誤是「致命的:嘗試使用標量參數'A」作爲數組」,呼籲如上圖所示的‘MYLIST’阿倫功能時。任何解決方法?非常感謝

+0

解決方法是什麼?第1行mylist = mymap [$ 1]'表示'mylist'是一個標量(初始化爲存儲在'mymap [$ 1]'中的值),然後是第2行'alen(mylist)'輪胎使用標量變量'mylist '作爲一個自然產生語法錯誤消息告訴你錯誤的數組。 –

回答

0

這是你想要做什麼:

$ awk '{for (i=2; i<=NF; i++) arr[$1] = arr[$1] FS $i} END{for (key in arr) print key ":" arr[key]}' file 
key1: value1 value3 
key2: value2 value3 value4 

如果沒有,那麼編輯您的問題提供更清楚的解釋和更好地展示您的需要的例子。

由於in操作符的存在,以上操作將以隨機順序輸出關鍵行,如果這是個問題,則很容易修復。