2011-05-05 110 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