Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 如何使用awk提取字段并使其成为变量以进行数据计算_Math_Awk - Fatal编程技术网

Math 如何使用awk提取字段并使其成为变量以进行数据计算

Math 如何使用awk提取字段并使其成为变量以进行数据计算,math,awk,Math,Awk,我正在使用awk计算数据文件中的平均亲合偏差。我怎样才能使数据点成为一个变量来调用我的等式 输入 col1 col2 第1排雅芙:14.87954 第2行Xavg:20.83804 第3行代码:7.886613 第4行Xstd:8.628519 我正在寻找这个等式的反馈 MFB = .5 * (Yavg-Xavg)/[(Yavg+Xavg)/2] 输出 col1 col2 第1排雅芙:14.87954 第2行Xavg:20.83804 第3行代码:7.886613 第4行Xstd:8.628

我正在使用
awk
计算数据文件中的平均亲合偏差。我怎样才能使数据点成为一个变量来调用我的等式

输入

col1 col2
第1排雅芙:14.87954
第2行Xavg:20.83804
第3行代码:7.886613
第4行Xstd:8.628519
我正在寻找这个等式的反馈

MFB = .5 * (Yavg-Xavg)/[(Yavg+Xavg)/2]
输出

col1 col2
第1排雅芙:14.87954
第2行Xavg:20.83804
第3行代码:7.886613
第4行Xstd:8.628519
第5行MFB:(计算值)
当前正在尝试使用以下代码执行此操作,但不起作用

var= 'linear_reg-County119-O3-2004-Winter2013-2018XYstats.out.out'
val1=$(awk -F, OFS=":" "NR==2{print $2; exit}" <$var)
val2=$(awk -F, OFS=":" "NR==1{print $2; exit}" <$var)
#MFB = .5*((val2-val1)/((val2+val1)/2))
awk '{ print "MFB :" .5*((val2-val1)/((val2+val1)/2))}'  >>     linear_regCounty119-O3-2004-Winter2013-2018XYstats-wMFB.out
var='linear_reg-County119-O3-2004-Winter2013-2018XYstats.out.out'
val1=$(awk-F,OFS=“:”NR==2{print$2;exit}”线性_regCounty119-O3-2004-Winter2013-2018XYstats-wMFB.out

尝试运行:
awk-f mfb.awk input.txt
其中

mfb.awk

BEGIN { FS = OFS = ": " } # set the separators
{ v[$1] = $2; print } # store each line in an array named "v"
END {
  MFB = 0.5 * (v["Yavg"] - v["Xavg"]) / ((v["Yavg"] + v["Xavg"]) / 2)
  print "MFB", MFB
  }
input.txt

Yavg: 14.87954
Xavg: 20.83804
Ystd: 7.886613
Xstd: 8.628519
输出:

Yavg: 14.87954
Xavg: 20.83804
Ystd: 7.886613
Xstd: 8.628519
MFB: -0.166823
或者,
mfb.awk
可以是以下代码,类似于原始代码:

BEGIN { FS = OFS = ": " }
{ print }
NR == 1 { Yavg = $2 } NR == 2 { Xavg = $2 }
END {
  MFB = 0.5 * (Yavg - Xavg) / ((Yavg + Xavg) / 2)
  print "MFB", MFB
  }
请注意,您通常不会在shell和Awk之间来回转换变量(至少在处理单个输入文件时是这样)。

请在问题中添加示例输入(无描述、无图像、无链接)和该示例输入所需的输出(无注释)。