2011-05-05 150 views
1

我需要修正我的shell語法(如下所示)Shell腳本----更正需要

cat $dfn | gawk 
'{for (i = 1; i <= NF; i += 1) 
{printf "%f\t", ((($i/$tag)/$bn) */ 1000000000);} 
printf "\n"}'>fn 

其中$dfn是文件名$tag$bn持有價值。而fn是輸出指向的文件。

注意:這行代表的是什麼,它取一個文件名(這個文件名是m維的n,並且在每個單元格中包含一個值)將單元格中的每個值除以$tag中的值。按$bn中的值計算,最後在執行所有除法操作之後,該值乘以10億。

預先感謝您。

+0

這個腳本中的問題是什麼?你可以爲'$ dfn'指向的文件提供* sample *值,'$ tag'和'$ bn'提供嗎? – Aif 2011-05-05 08:35:53

+0

$ dfn是一個包含值的製表符分隔文件,其格式爲n乘m。 $ tag = 12000000和$ bn = 60000000000 – Angelo 2011-05-05 08:38:14

+0

我想擁有一些值,以便能夠在本地運行測試。但看起來我不再需要了。 – Aif 2011-05-05 08:40:39

回答

1

我想你應該把/ *改成*,當你將這個值減少1億時。

+0

Dhanyawad Raghuramjee – Angelo 2011-05-05 08:57:15

3

變量$tag$bn指的是行中的字段。我假設你實際上希望他們成爲環境變量。將它們作爲變量傳遞給awk:

cat $dfn | 
    gawk -v tag="$tag" -v bn="$bn" '{ 
     for (i = 1; i <= NF; i += 1) { 
     printf "%f\t", ((($i/tag)/bn) * 1000000000) 
     } 
     printf "\n" 
    }'>fn 

編輯:同時修復Raghuram指出的乘法。

+0

@Angelo您還需要更改乘法。 – 2011-05-05 08:48:09