一、问题出处
请戳下面查看问题出处:
用shell脚本怎样实现A文件内数字和B文件数字相加,之和替换B文件里的数字?
二、问题详情
A.txt 中第二列数字与 B.txt 中第二列数字相加,行数一致的数字;
相加之和,替换 B.txt 第二列数字。
文件格式如下图:
三、我的答案
1、如果 filleB 只关注 " #kn vn" 的内容,其他注释类内容不需要保留的话,那实现起来就比较简单,一行命令搞定
paste fileA fileB | grep "#[0-9]" | awk '{print $1 " " $2+$4}' > filleB
2、如果需要完整保留 file2 注释的话,那就再加两行搞定
grep -n "#[0-9]" fileA | cut -d ":" -f 1 > fileAtmp
paste fileA fileB | grep "#[0-9]" | awk '{print $1 " " $2+$4}' > fileBtmp
paste fileAtmp fileBtmp | awk '{cmd="sed -i \""$1"c " $2 " " $3"\" fileB"; system(cmd)}'