2015-10-22 4 views
0

У меня есть файл с 2 столбцами. Я хотел бы выполнить следующую операцию: Col1/[(1 + 0.214/(Col2 * Col2))^2]. Для этого я пишу команду awk:Математическая операция над столбцами двух файлов

awk '{print $1/(1+.214/($2*$2))*(1+.214/($2*$2))}' ab.txt > G1.txt 

Но я получаю те же цифры, что и столбец1 на выходе. Может ли кто-нибудь сказать мне, где я ошибаюсь?

спасибо.

+0

использовать оператор экспоненты '^' для упрощения выражения: awk '{print $ 1/(1 + .214/($ 2 * $ 2))^2} ' – pcantalupo

+0

Спасибо. Работает отлично. – user3389597

ответ

1

Неудивительно, что вы снова получаете одинаковые номера, потому что отсутствует одна пара круглых скобок. Посмотрите внимательно на свое выражение! Что вы вычисляете (y/x) * x (y, деленное на x, умноженное на x). То, что вам нужно, это y/(x * x) или другими словами

awk '{print $1/((1+.214/($2*$2))*(1+.214/($2*$2)))}' ab.txt > G1.txt 

Не волнуйтесь! Если бы я получил копейку за каждую пропущенную скобку, ...

+0

Спасибо! Я понял. – user3389597