LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 939|回复: 8

关于行读取和逻辑运算的问题

[复制链接]
发表于 2007-9-26 22:43:13 | 显示全部楼层 |阅读模式
最近写一个小脚本,其中关于算术逻辑运算的问题无法解决,在csh环境下运行

有两个文件a.txt 和b.txt,内容分别如下
a.txt
  1.   8.16935  
  2.   8.27505  
  3.   7.34685  
  4.   8.26473  
  5.   7.56676  
复制代码

b.txt
  1. -0.06504
  2. -0.06887
  3. -0.06538
  4. -0.06887
  5. -0.07321
复制代码


思路:a.txt文件中的每一行分别除以b.txt文件中对应的每一行的绝对值,即为 8.16935/|-0.06504|; 8.27505/|-0.06887|。。。。,两个文件对应行相除后的数据保存在新文件c.txt中。

尝试编写,实在能力有限,请大家指点。
先谢过。
发表于 2007-9-27 08:40:03 | 显示全部楼层
bash下绝对值不是问题
  1. ["$var" -gt 0 ] || var=$(( 0 - var ))
复制代码

没用过csh,不知道它是否支持浮点运算。bash不支持,所以要写一些函数模拟浮点运算,有点烦。
回复 支持 反对

使用道具 举报

发表于 2007-9-27 10:01:35 | 显示全部楼层
csh programming considered harmful.
回复 支持 反对

使用道具 举报

发表于 2007-9-27 10:38:55 | 显示全部楼层
Post by Jockey
csh programming considered harmful.

Why? 我从未用过csh...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-27 15:17:16 | 显示全部楼层
设定绝对值是为了保证两行数据相除后为正值,这个问题可以不用绝对值而用其它方式得到。

现在的主要问题是行读取和对应运算的问题无法操作,怎么分别从a.txt中读取第一行数据除以b.txt中的第一行数据,a.txt中读取第二行数据除以b.txt中的第二行数据。。。一直进行到最后一行。

请大家给些意见
回复 支持 反对

使用道具 举报

发表于 2007-9-27 19:23:49 | 显示全部楼层
$ sed 's/^-//' b.txt | paste -d / a.txt - | bc -l
125.60501230012300123001
120.15463917525773195876
112.37152034261241970021
120.00479163641643676491
103.35691845376314711105
$
回复 支持 反对

使用道具 举报

发表于 2007-9-27 21:13:45 | 显示全部楼层
awk '{getline aa <"b.txt"; sub("-","",aa);print $1/aa}' a.txt
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-27 22:44:44 | 显示全部楼层
非常感谢各位的帮忙,脚本完整编写好了。一直被sed、awk困扰,汗。。。
以后多花时间学习,争取可以用sed、awk独立编写脚本

再次感谢
回复 支持 反对

使用道具 举报

发表于 2007-9-28 00:35:42 | 显示全部楼层
Post by Dasn
$ sed 's/^-//' b.txt | paste -d / a.txt - | bc -l
$

Cool! I didn't know 'bc'.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表