我想用awk(在一個循環內)使用從下面描述的bash腳本傳遞的變量來總結一個表(在文件中)的兩個數字。我正在處理的數字($ value)是浮點值。 $值只包含一個數字。請注意,發生錯誤的行是126,125正常工作。awk錯誤參數列表太長,只有兩個變量
111 while read line
112 do
120 n=2
121 sum=0
122
123 for x in $(seq 1 $number)
124 do
125 value=$(echo "$line" | awk -v n="$n" '{print $n}') # I am just getting the values to sum up here
126 sum=$(awk -v sum="$sum" -v value="$value" '{sum = sum + value; print sum}')
n=$((n+1))
129 done
done < $file
其中$ number是先前定義的。
我得到以下錯誤:
./script.sh: line 126: /bin/awk: Argument list too long
我只是想在這條線傳遞awk命令兩個變量,任何想法,爲什麼我收到此錯誤?
在 「文件」 表的一個例子:
A -0.717616 -0.623398 -0.214494 -0.352871
B -0.19373 -0.140626 -0.0523623 0.0248858
C -0.0822092 -0.302354 0.347158 -0.0373262
D 0.310213 0.312805 0.114366 0.353496
E -0.175354 -0.0263985 -0.125694 -0.155082
謝謝!
我對於你想要做的事情有一段艱難的時間,但是在一個循環中逐行讀取一個文件,然後逐個遍歷該行中的字段,然後在awk中添加結果,看起來像是一種非常奇怪的方式解決你試圖解決的任何問題。我在這裏打賭,這個整個事情可以用一個awk命令完成。你能分享一個你的文件的例子,然後你的預期結果是什麼? – JNevill
一個問題是'print'輸出的是整個輸入行,而不是'sum'的值。 – chepner
問題是我在每行不同數量的字段的不同文件上使用該腳本。每行的字段數量基本上都包含在$數字中。我添加了一個文件的樣本,這個文件有4列,但正如我剛纔提到的,這個數字可能不同。預期的結果將是每行的所有字段的總和。我希望這更有意義!讓我知道是否還有其他我可以指定的東西。 – arielle