LinuxSir.cn,穿越时空的Linuxsir!

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

急求一个shell 脚本编程!!!谢谢各位高手了!

[复制链接]
发表于 2007-4-16 13:51:35 | 显示全部楼层 |阅读模式
例如:有三个文件分别为:c1,c2,c3, 三个文件的形式完全一样,但内容不太一样。其中都包含: 例如:....
0.503832  0.503832  0.426419
  0.333333  0.333333  0.484047

     48   48  256
   0.88568030000E+00   0.97086430000E+00   0.85516250000E+00   0.91785000000E-02  -0.14307696000E+01
  -0.26773217000E+01  -0.30383333000E+01  -0.24614880600E+01  -0.14548750000E+01  -0.63860235000E+00
  -0.27473504000E+00  -0.16500338000E+00  -0.12916408000E+00  -0.87627130000E-01  -0.13493959000E+00
  -0.46664815000E+00  -0.13114017300E+01  -0.24541409300E+01  -0.32898446000E+01  -0.32569150000E+01
  -0.23187610000E+01  -0.11024669000E+01  -0.37626080000E+00  -0.29517690000E+00  -0.37430830000E+00
  -0.28819090000E+00  -0.37412520000E+00  -0.11077454000E+01  -0.23231416000E+01  -0.32601570000E+01
  -0.32996747000E+01  -0.24673524400E+01  -0.13153156700E+01  -0.46072749000E+00  -0.13112105000E+00
  -0.89177770000E-01  -0.12854297000E+00  -0.16271639000E+00  -0.27879948000E+00  -0.64568420000E+00
  -0.14522417600E+01  -0.24487697300E+01  -0.30278940000E+01  -0.26729093000E+01  -0.14254204000E+01
   0.14710900000E-01   0.85266410000E+00   0.96343720000E+00   0.97086970000E+00   0.96868120000E+00
   0.39689340000E+00  -0.89055900000E+00  -0.22931536000E+01  -0.30281391000E+01  -0.27945448000E+01
  -0.18845866000E+01  -0.89545122000E+00  -0.30964421000E+00  -0.12999474000E+00  -0.99973370000E-01
  -0.55390890000E-01  -0.26597430000E-01  -0.18566121000E+00  -0.75313509000E+00  -0.17672368400E+01
  -0.28450309000E+01  -0.33904196000E+01  -0.29994741000E+01  -0.18912296000E+01  -0.83507860000E+00
  -0.39866650000E+00  -0.39635760000E+00  -0.35344730000E+00  -0.31872030000E+00  -0.78758910000E+00
  -0.18755389000E+01  -0.29912925000E+01  -0.34070161000E+01  -0.28946179000E+01  -0.17996565200E+01
  -0.73193708000E+00  -0.15071032000E+00  -0.22394860000E-01  -0.60491300000E-01  -0.88402450000E-01
  -0.13422721000E+00  -0.35400572000E+00  -0.93288209000E+00  -0.18689860300E+01  -0.27558164000E+01
  -0.30127271000E+01  -0.22932361000E+01  -0.89267590000E+00   0.36340600000E+00   0.89889210000E+00
   0.93161420000E+00   0.85518320000E+00   0.39690870000E+00  -0.70573930000E+00  -0.20827152000E+01
  -0.29660181000E+01  -0.29281068000E+01  -0.21604649600E+01  -0.11756924500E+01  -0.43900575000E+00
  -0.11202257000E+00  -0.31248080000E-01  -0.27129930000E-01   0.17971310000E-01  -0.62977600000E-02
  -0.28657451000E+00  -0.10227472600E+01  -0.20954084600E+01  -0.30633693000E+01  -0.33993976000E+01
  -0.28576158000E+01  -0.17933158000E+01  -0.91675460000E+00  -0.57629320000E+00  -0.52875540000E+00
  -0.54676030000E+00  -0.87070140000E+00  -0.17501492000E+01  -0.28336325000E+01  -0.34000049000E+01
  -0.30813110000E+01  -0.21153296800E+01  .......
                    ........
                    这里有三个整数 : 48  48  256(空格相隔)
这下边是:  5列的矩阵,列与列之间空格相隔,大概有10万多行
想编个脚本程序:求: 三个文件c1,c2,c3的 48  48  256(空格相隔)下边的矩阵的差,并且这个差矩阵文件c4的上边和下边的内容与c1的上边和下边的内容完全一样。谢谢了!如果我没有把问题说清楚,请QQ联系:504952988。
发表于 2007-4-16 15:17:51 | 显示全部楼层
你这个三个矩阵的差,是什么意思?
c1-c2-c3??
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-18 08:53:11 | 显示全部楼层
你好,我是想做个数值计算,就是把这三个文件中间的矩阵对应数元做差,差文件的其他部分和c1的完全一样。谢谢!
回复 支持 反对

使用道具 举报

发表于 2007-4-18 08:58:54 | 显示全部楼层
主要就是问你作差的问题,是c1-c2-c3 还是c1-c3-c2还是,这可是有6种可能地。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-18 11:49:22 | 显示全部楼层
sorry,是c1-c2-c3
回复 支持 反对

使用道具 举报

发表于 2007-4-18 13:25:56 | 显示全部楼层
你当初得到这三个文件的时候怎么就不顺手再多产生一个文件呢.....,
如果数据是一个一个产生的话.......
回复 支持 反对

使用道具 举报

发表于 2007-4-18 14:52:26 | 显示全部楼层
  1. #!/bin/bash
  2. paste -d " " $1 $2 $3 | awk '
  3. BEGIN {flag = 0}
  4. flag == 0 {
  5. for(i = 1; i < NF / 3; i++)
  6.         printf("%s ", $i)
  7. printf("%s\n", $(NF / 3));
  8. }
  9. flag == 1 {print ($1 - $6 - $11), ($2 - $7 - $12), ($3 - $8 - $13), ($4 - $9 - $14), ($5 - $10 - $15)}
  10. NF == 9 && $1 == 48 && $2 == 48 && $3 == 256 {flag = 1}
  11. '
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-18 19:39:02 | 显示全部楼层
谢谢楼上!我是一位新手,你这个我好像看的不太懂,做成可执行文件之后,没有得到预期的结果。不知道那里出问题了。
回复 支持 反对

使用道具 举报

发表于 2007-4-19 00:53:47 | 显示全部楼层
如何执行的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-19 09:52:54 | 显示全部楼层
就是:chmod a+x bat 生成可执行文件,./bat 来着,对吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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