我必須製作一個能夠對列進行求和的腳本。該文件看起來像這樣:使用awk的shell腳本中的多個參數
1 2 3
1 2
1
在執行腳本,而不將參數./sum.sh
我得到的所有列的總和所以答案是10,但我必須使它只添加某些列。例如./sum.sh 1 3
應該總結第一和第三列,並給予6
我的代碼:
sum=0
if [[ $# -eq 0 ]]; then
awk '{for(i=1;i<=NF;i++) sum+=$i;}; END {print sum}' plik.txt
else
exit 0;
fi
while [ $# -gt 0 ]
do
awk '{sum +="$1"} END {print sum}' plik.txt
shift
done
我認爲我非常接近的解決方案,但必須有所缺失。
有一個這裏沒有使用'awk'的好解決方案:http://stackoverflow.com/questions/33006845/how-to-sum-a-row-of-numbers-from-text-file-bash-shell -scripting,如果你打算做這樣的事情,讓'awk'確定每行是否有一個參數或更多參數可能會更好。 – Yaron
但我必須使用awk來完成。我知道這段代碼並不是很糟糕,但只有一小部分我錯過了實現我想要的東西。 – codddeer123
我提供的解決方案不會按照每行打印,如果您希望每行都計算總和,則需要進行一些小的更改。 – Yaron