使用脚本生成的输出值在文件中添加值

使用脚本生成的输出值在文件中添加值

我有一个 txt/log 文件,其中包含数据- cat sample.log/(.txt)

500,3,2   

正在运行的脚本会覆盖sample.log 中的值。我希望数据与其各自的行相加,而不是覆盖/或生成新行。

例子:

Sample.log -500,3,1  
Script out- 600,4,3

最终输出需要存储在sample.log

1100,7,4

每次脚本运行时,它都会不断添加相应的值。

请帮我得到这个输出。

答案1

这是使用 GNU awk 执行此操作的一种方法,其中调用脚本script.sh并调用现有的总文件/tmp/sample.log

script.sh|\
cat /tmp/sample.log -|\
awk -F, '{for (f=1;f<=NF;f++) TOT[f]+=$f} END {for (f=1;f<length(TOT);f++) printf TOT[f]","; print TOT[length(TOT)]}' >/tmp/sample1.log
mv -f /tmp/sample1.log /tmp/sample.log

的输出script.sh被组合(作为一行放在)现有的sample.log,然后将这两行相加awk,并将结果用于替换sample.log

这适用于任意数量的字段(不必保持一致)。分隔符设置为逗号,但这很容易更改。

答案2

尝试了以下步骤

sh script >scriptout
cat sample.log scriptout|awk -F ","  'BEGIN{sum=0;kum=0;jum=0} OFS =","{sum=sum+$1}{kum=kum+$2}{jum=jum+$3}END{print sum,kum,jum}' > final_out
mv final_out sample.log

相关内容