我们说我们有一个输入文件_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可以完成它的工作吗?感谢〜!
答案 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"
可以简化引用。