如何使用Awk实现表格各单元格与等比数列对应项相乘计算
错误原因
- 指数计算偏移:需求要求第i列(从左数第1列为第1项)的乘数为
10^(i-1),原有代码使用10**i计算,每个值都多乘了10倍 - 输出逻辑不匹配:原有代码是将每行所有处理后的数值求和后输出整行单个结果,你需要的是输出每行每个单元格处理后的独立数值
正确实现
场景1:输出每行处理后的所有单元格(匹配你给出的预期结果格式)
awk '{ for(i=1; i<=NF; i++) { printf "%d ", $i * 10^(i-1) } print "" }' test.txt
场景2:输出每行处理后所有数值的求和结果(在你原有代码需求上修正)
awk '{ sum = 0 for(i=1; i<=NF; i++) { sum += $i * 10^(i-1) } print sum }' test.txt
效果验证
以你给出的第三行输入0 0 1 1 0 1为例:
处理后输出行:0 0 100 1000 0 100000,和你的预期一致;求和结果为101100。
内容的提问来源于stack exchange,提问作者SG Kwon
相关产品推荐
相关产品推荐

