2015-08-28 67 views
0

我有下面的示例中的字符串,但也可能是任何東西,所以不要拘泥於名稱。如何採取串出一組在AWK

apple = green 
pie = brown 

我想單獨獲得「蘋果」和陣列中的「綠色」等,責令。

array [0,0] = apple 
array [0,1] = green 
array [1,0] = pie 
array [1,1] = brown 

如何在'='符號之前和之後將awk中的字符串分成兩部分?

我必須使用子或拆分的功能呢?

+0

的awk -F '=' '{打印$ 1}' 會做 –

回答

1

按照慣例,並通過AWK內置函數來實現,awk數組爲1,而不是0開始,所以你的陣列應該array[1,1] = apple開始。另外,如果你有GNU awk的,你可以使用真正的多維數組:

$ awk -F' = ' ' 
{ array[NR][1]; split($0,array[NR]) } 
END {for (i=1;i<=NR;i++) for (j=1;j<=NF;j++) printf "array[%d][%d] = %s\n",i,j,array[i][j]} 
' file 
array[1][1] = apple 
array[1][2] = green 
array[2][1] = pie 
array[2][2] = brown 
0

這將讓你你想要的數組:

awk -F' = ' '{ array[NR-1,0] = $1; array[NR-1,1] = $2 }' file 

設置字段分隔符=使用-F開關和分配領域中,使用記錄編號NR(減去1,因爲它從1開始,不是0)。

+0

您好,感謝!什麼是-F意味着什麼? – 6axter82

+0

'-F'就是用來設置字段分隔符。 –

+0

這個問題'-F意味着什麼?'意味着你需要獲得Arnold Robbins編寫的第4版Effective Awk Programming一書! –