我需要得到这个公式的结果-一列数字
{x = ($1-T1)/Fi; print (x-int(x))}
来自输入文件1
4 4
8 4
7 78
45 2
file2
0.2
3
2
1
此文件应该是4个输出。 $ 1是文件1的第一列,T1是文件1的第一列(数字4)-始终是这个数字Fi,其中i = 1、2、3、4是第二个文件的数字。因此,我需要一个从1到4的i周期,并使用F1 = 0.2计算一次,使用F2 = 3进行第二次输出,使用F3 = 2进行第三次输出,最后使用F4 = 1。如何以这种方式表达T1和Fi以及如何进行循环?
awk 'FNR == NR { F[++n] = $1; next } FNR == 1 { T1 = $1 } { for (i = 1; i <= n; ++i) { x = ($1 - T1)/F[i]; print x - int(x) >"output" FNR} }' file2 file1
这将提供4个以上的输出。请问怎么了?
答案 0 :(得分:2)
FNR == 1 { T1 = $1 }
运行两次,开始读取file2
时T1
设置为0.2
,>"output" FNR
有问题,应将输出名称表达式括在括号中。这就是我要做的:
awk '
NR==1 {t1=$1}
NR==FNR {f[NR]=$1; next}
{
fn="output"FNR
for(i in f) {
x=(f[i]-t1)/$1
print x-int(x) >fn
}
close(fn)
}
' file1 file2