LinuxSir.cn,穿越时空的Linuxsir!

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

按模式提取数据,用什么工具写脚本方便?

[复制链接]
发表于 2007-4-22 21:54:51 | 显示全部楼层 |阅读模式
我有很多这样的数据文件
Variables:  8169  [Fix: 1, Binary:  8068, Integer: 100]
Objective nonzeros : 128
Linear constraints : 2217  [Less: 2069,  Equal: 148]
  Nonzeros           :    4434
  RHS nonzeros       :  148
Indicator constraints:   7758  [Less: 3694,  Equal: 2143,  Greater: 1921]
  Nonzeros       :   15516
  RHS nonzeros    :  7610

我想提取"Binary: "和", General"之间的8068,或者
Indicator打头行里的"[Less: "和", Equal:"之间的3694
类似这种数据。用什么写脚本最简单?

如果能忽略模式匹配之后字符串里的空格和'\t'就更好了。
比如提取出" \t8068 "这个字符串,前后各有一个空格和一个'\t',
能去掉非数字的字符,最终转换成"8068"。
发表于 2007-4-23 11:19:29 | 显示全部楼层
用Perl还是比较方便的。

另外,文件中每一个冒号后面都跟着一个数字,我觉得用shell可以先将冒号提取,然后再提取后面的数字。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-23 12:06:13 | 显示全部楼层
Post by 水星
用Perl还是比较方便的。

另外,文件中每一个冒号后面都跟着一个数字,我觉得用shell可以先将冒号提取,然后再提取后面的数字。


以前一直用awk或者cut的,现在发觉功能还是有点不够。
这种情况,如果数据所在的列稍微变一下位置,用awk就很不好弄。
如果很规则的情况,awk还是很好用的。看来还得学学perl啊!
回复 支持 反对

使用道具 举报

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

本版积分规则

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