Как добавить числа из файлов для расчета? - PullRequest
1 голос
/ 27 апреля 2019

Мне нужно получить результаты этой формулы - столбец чисел

{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 - числа из второго файла. Поэтому мне нужен цикл для i от 1 до 4 и один раз вычислить член с 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 Ответ

2 голосов
/ 27 апреля 2019
  1. FNR == 1 { T1 = $1 } выполняется дважды, когда file2 начинает считываться T1 имеет значение 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...