如何使用Awk对两行数据的对应列数值做减法计算得到预期结果
Awk两行对应列数值相减实现方案
原代码错误原因
- Awk默认以换行符作为记录分隔符(RS),每一行对应一条独立的处理记录,你将字段分隔符FS设置为换行符后,每行只会被识别为1个字段,且处理第二行时无法读取到第一行的字段内容,因此无法实现对应列相减的逻辑。
正确实现代码
awk 'NR == 1 { # 第一行遍历所有字段存入数组 for(i=1; i<=NF; i++) col[i] = $i } NR == 2 { # 第二行遍历所有字段做减法输出 for(i=1; i<=NF; i++) { printf "%d ", col[i] - $i } # 输出换行符补全格式 print "" }' 输入文件名
运行效果
针对你提供的输入数据:
34 43 67 87 21 22 64 43
运行上述代码后会直接输出期望结果:
13 21 3 44
内容的提问来源于stack exchange,提问作者BaleKaneSon
相关产品推荐
相关产品推荐

