如何将文件中的数字相加到计算中?

时间:2019-04-27 17:18:08

标签: awk

我需要得到这个公式的结果-一列数字

{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个以上的输出。请问怎么了?

1 个答案:

答案 0 :(得分:2)

  1. FNR == 1 { T1 = $1 }运行两次,开始读取file2T1设置为0.2
  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