1
我有一個bash陣列等訪問一個bash陣列中AWK環
myarray = (1 2 3 4 5 ... n)
另外我讀一個文件只有一行的例如輸入:
1 2 3 4 5 ... n
我讀它逐行到一個數組並與打印出來:
awk 'BEGIN{FS=OFS="\t"}
NR>=1{for (i=1;i<=NF;i++) a[i]+=$i}
END{for (i=1;i<NF;i++) print OFS a[i]}' myfile.txt
myarray
的大小與相同。現在myarray
從索引0
和a
開始索引1
。我的主要問題是如何將bash數組傳遞給我的awk表達式,以便我可以在打印循環中使用它,並使用相應的元素。所以我試過的是這樣的:
awk -v array="${myarray[*]}"
'BEGIN{FS=OFS="\t"}
NR>=1{for (i=1;i<=NF;i++) a[i]+=$i}
END{for (i=1;i<NF;i++) print OFS a[i] OFS array[i-1]}' myfile.txt
雖然這並不奏效。我沒有得到任何輸出myarray
。在這個例子中我所需的輸出是:
1 1
2 2
3 3
4 4
5 5
...
n n
謝謝。這是問題!就在旁邊:是否可以做一些像'OFS =「\ t \ t」'。因爲有時我需要其中的兩個才能正確對齊數字。 – uitty400
@ uitty400當然,你可以用'echo'來測試1 2 3「| awk'BEGIN {OFS =「\ t \ t」} {print $ 1,$ 2}''。 – fedorqui
這個例子的作品,但它似乎並沒有工作在我的腳本 – uitty400