第一行文本文件未在shell中读取

时间:2015-03-26 05:57:49

标签: bash shell unix

好的,所以我编译这段代码来读取一个文本文件但是它成功地找到了除第一行之外所需的每一列的总和!因此给了我错误的求和,它排除了它读入的第一行的值。它设置了值:$ line = ddsdfj:jdskf:1:fjf但从不从第一行中提取1。任何线索都会受到赞赏。

FILE=$1
while read line
do
 awk -F: '{summation += $3;}END{print summation;}'
done < $FILE

1 个答案:

答案 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中的值作为某些东西,但当然,这只是从每一行中单独提取第三个字段,而不是从不同的行中实际添加任何值。