2012-06-22 51 views
1

我使用的腳本像下面awk中無法將值存儲到一個數組

SCRIPT

declare -a GET 

i=1 

awk -F "=" '$1 {d[$1]++;} {for (c in d) {GET[i]=d[c];i=i+1}}' session 

echo ${GET[1]} ${GET[2]} 

說明

的問題是外印刷的GET值不正確的值。 ..

+0

我不確定你在做什麼。這是一個shell腳本嗎?如果是這樣,你不能從awk之外訪問awk的內部變量。 – ALiX

+0

你是對的我只使用shell腳本。但是如果我需要在awk語句之外使用awk變量,我該怎麼做。我腦中想到的一個選項是,我可以將該值存儲在shell腳本變量中的一箇中,如果是這種情況,我如何在awk語句中訪問shell腳本變量。謝謝 – User

+0

我仍然不確定問題究竟是什麼。請你重新說明一下嗎?你到底想要發生什麼,什麼不是? – Levon

回答

2

我將你的問題理解爲「我如何在awk被調用的shell內使用我的awk腳本的結果」。事實是,這並不是微不足道的。您不希望能夠在shell中輕鬆地使用C程序或python腳本的輸出。和awk一樣,這是一種自己的腳本語言。

有一些解決方法。要獲得可靠的解決方案,請將結果從awk腳本以適當簡單的格式寫入文件,並從shell中讀取它們。作爲一種攻擊,你也可以嘗試使用$()將awk的輸出直接準備到shell中。再加上與set命令,你可以這樣做:

set -- $(awk <awk script here>) 

然後用$1$2等,但你必須要小心從AWK輸出空間。

+0

很好的回答。我理解你的文件閱讀選項,但我沒有得到第二部分(set命令)。您能否給我一個針對我的問題的set方法的實例。謝謝 – User

+0

我得到了輸出..我嘗試使用設置它的工作..非常感謝 – User

+1

@用戶如果這回答了你的問題,並解決了你的問題,你應該[接受這個答案通過點擊勾號](http:// meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235)在答案旁邊 - 它會獎勵你和那些回答了一些代表點並將此問題標記爲已解決的人。 – Levon

相關問題