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之间来回转换变量(至少在处理单个输入文件时是这样)。请在问题中添加示例输入(无描述、无图像、无链接)和该示例输入所需的输出(无注释)。