0
我在文件中給出了一些矩陣作爲參數。我需要找出每列的平均值,並只求列中列數大於或等於列平均值的數字。多個矩陣中大於每列平均值的值總和
例如:
f1:
10 20 30
5 8
9
f2
:
1 1 2 2 3
5
6 6
1 1 1 1 1
f3
:
1 2 3 4 5
6 7 8 4 10
8
10 9 8 7 6
和第Ë輸出應該
f1: 19 20 30
f2: 11 6 2 2 3
f3: 18 16 16 7 10
你像這樣運行程序:
MS.1 f1 f2 f3
到目前爲止,我得到這個:
#!/bin/awk -f
BEGIN {
M=0
M1=0
counter=1
fname=ARGV[1]
printf fname":"
}
(fname==FILENAME) {
split($0,A," ")
for(i=1;i<=length(A);i++) {
B[i]=B[i]+A[i]
if(A[i]<=0||A[i]>=0)
C[i]=C[i]+1
}
for(i=1;i<=length(B);i++) {
if((C[i]<0||C[i]>0))
D[i]=B[i]/C[i]
}
for(i=1;i<=length(A);i++) {
if(A[i]>=D[i])
E[i]=E[i]+" "+A[i]
}
}
(fname!=FILENAME) {
for(i=1;i<=length(E);i++) {
printf " "E[i]
}
printf "\n"
for(i=1;i<=length(B);i++) {
B[i]=0
}
for(i=1;i<=length(C);i++) {
C[i]=0
}
fname=FILENAME
printf fname":"
}
END {
for(i=1;i<=length(B);i++) {
printf " "B[i]
}
printf "\n"
}
,但它僅適用於第一個文件,然後它攪亂向上。
我的輸出
f1: 19 20 30
f2: 30 26 31 1 1 1
f3: 24 16 16 11 16 0
我知道我有一個問題與所有的數組的事情。
運行。如果你使用了GNU AWK(GAWK)請格式化輸入和輸出 – 123
,'BEGINFILE'和'ENDFILE'應該是對你有用https://開頭www.gnu.org/software/gawk/manual/html_node/BEGINFILE_002fENDFILE.html – jas
是輸入數據固定寬度數據分開嗎?或單獨的空間分開? –