Сценарии оболочки и использование gawk наряду с арифметическими операциями - PullRequest
0 голосов
/ 09 мая 2011

У меня есть файл с разделителями табуляции, и я хочу выполнить некоторые математические вычисления для столбцов, присутствующих в файле.

пусть имя файла будет sndf, а $tag имеют некоторое целочисленное значение. Я хочу сначала найти разницу между значениями столбцов 3 и 2, а затем снова разделить значение столбца 4 на значение в $tagразделите полученный результат на разницу в значениях столбцов 3 и 2, а конечный результат умножьте на 100.

cat $sndf | gawk '{for (i = 1; i <= NF; i += 1) {
    printf "%f\t"  $3 -$2 "\t",  (((($4/"'$tag'")/($3-$2)))*100);
} printf "\n"}'>normal_wrt_region

команда записывает ответ 4 раза вместо одного раза в выходной файл .....Вы все можете предложить улучшение?спасибо

РЕШЕНИЕ: Дорогие все, я решил проблему, спасибо всем за то, что прочитали проблему и потратили ваше время.

1 Ответ

2 голосов
/ 09 мая 2011

команда записывает ответ 4 раза вместо одного раза в выходной файл. Можете ли вы все предложить улучшение?

Не использовать цикл for, если он вам не нужен?

cat $sndf | gawk '{ printf "%f\t"  $3 -$2 "\t", (((($4/"'$tag'")/($3-$2)))*100) }'
...