Shell 脚本编写以及 gawk 和算术运算的使用

发布于 2024-11-05 17:40:22 字数 446 浏览 1 评论 0原文

我有一个制表符分隔的文件,我想对文件中存在的列执行一些数学计算。

让文件名是 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 次,而不是一次... ..你们都可以提出改进建议吗? 谢谢

解决方案:亲爱的大家,我已经解决了问题,感谢大家阅读问题并投入时间。

I have a tab delimited file and I want to perform some mathematical calculations on the columns present in file.

let the file name be sndf and $tag have some integer value, I want to first find difference between the values of column 3 and 2 then divide column 4 value with the value in $tag again divide the resultant with the difference in values of column 3 and 2 and final result is multiplied by 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

the command is writing answer 4 times instead of one time to the output file..... can u all suggest an improvement?
thank you

SOLUTION: Dear all, I have solved the problem, thank you all for reading the problem and investing your time.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

只为一人 2024-11-12 17:40:22

该命令将答案写入输出文件 4 次,而不是一次,你们都可以提出改进建议吗?

如果不需要,就不使用 for 循环?

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

the command is writing answer 4 times instead of one time to the output file, can u all suggest an improvement?

Don't use the for loop if you don't need one?

cat $sndf | gawk '{ printf "%f\t"  $3 -$2 "\t", (((($4/"'$tag'")/($3-$2)))*100) }'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文