将awk计算结果传递给变量

时间:2014-07-02 21:46:58

标签: variables awk

我们说我们有一个输入文件_789

1
1
1

有没有办法可以将awk计数结果输出到变量中,以便打印出以下内容?

Cargo 789 has 3 items

现在我们尝试:

for cargo in 789

do

awk '{ sum+=$1} END {print sum}' file_${cargo}  # This will give us a result of "3". 

echo "Cargo ${cargo} has ${calculation} items" 

done

想知道是否有任何方法可以将awk one liner结果传递给$ {calculation},那么echo可以完成它的工作吗?感谢〜!

1 个答案:

答案 0 :(得分:1)

awk计算可以存储在shell变量中:

calculation=$(awk '{ sum+=$1} END {print sum}' "file_${cargo}")

或者,您可以在awk中执行计算和打印:

awk '{ sum+=$1} END {print "Cargo '"${cargo}"' has " sum " items"}' "file_${cargo}"

或者,我们可以使用printf,它可以更好地处理空文件:

awk -v cargo="$cargo" '{sum+=$1} END {printf "Cargo %s has %d items\n", cargo, sum}' "file_${cargo}"

此外,使用选项-v cargo="$cargo"可以简化引用。