好的,所以我编译这段代码来读取一个文本文件但是它成功地找到了除第一行之外所需的每一列的总和!因此给了我错误的求和,它排除了它读入的第一行的值。它设置了值:$ line = ddsdfj:jdskf:1:fjf但从不从第一行中提取1。任何线索都会受到赞赏。
FILE=$1
while read line
do
awk -F: '{summation += $3;}END{print summation;}'
done < $FILE
答案 0 :(得分:0)
while
循环完全是多余的。它看起来像你想要的是
awk -F: '{s+=$3}END{print s}' "$1"
很简单。
您拥有的代码将使用read
读取第一行,然后将其他行作为awk
的标准输入;因此,你正在观察的行为。像
while read line; do
awk -F: '{s+=$3}END{print s}' <<<"$line"
done <"$1"
实际上会使用line
中的值作为某些东西,但当然,这只是从每一行中单独提取第三个字段,而不是从不同的行中实际添加任何值。