我有一种情况,我试图在一行中添加三个字段,并在输入文件中收到它。我写了一些我认为没有遵循最佳Unix惯例的东西,并且需要一些建议来尽可能地写出最好的东西。附上我的示例行。
我的问题是:
输入文件1采样行
CLP*4304096*20181231*BH*0*AH>444*158330.97~*FB*0*SS>02*0*SS>03*0*J1*0~
输入File2示例行
CLP*4304096*20181231*BH*0*AH>444*158330.97*FB*0
我写的脚本
clp=$(awk -F'[*]' '/CLP/{print $7}' $file)
ss02=$(awk -F'[*]' '/CLP/{print $11}' $file)
ss03=$(awk -F'[*]' '/CLP/{print $13}' $file)
clpsum=clp+ss02+ss03
我知道这不是最好的方法,请让我知道如何同时处理输入文件1(具有158330.97〜)方案和文件2方案。
谢谢!
答案 0 :(得分:0)
在1个awk命令中:
awk 'BEGIN{FS="*"}{var1=$7;var2=$11;var3=$13; var4=var1+var2+var3; printf("var4 = %.2f\n",var4)}' file.txt
就可以工作〜如果您想在文件带有不同字段中的数字的情况下处理文件,则可能希望有人提供更可靠的答案〜etc。希望这对您有所帮助。