LinuxSir.cn,穿越时空的Linuxsir!

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

格式化文本

[复制链接]
发表于 2003-9-18 14:37:37 | 显示全部楼层 |阅读模式
现在有一组数据,排列的有些乱,但是比较规则的是,第奇数项数据是自变量,第偶数项是函数,希望把这组数据排两列,左边是自变量,右边是函数值。本来想有循环实现,未果。只好改用其他的办法。以下是我的一个脚本,其中$1是原始文件,其中含有数据和一些其他的字符。
#!/bin/bash
grep '[0-9]'<$1 |tr -d '[a-z,A-Z,[]{}\>()^]'|tr -s' ' '\n'>temp  #把所有的数据排成一列
sed -n '1~2 p' num>list1 #挑出奇数行
sed -n '2~2 p' num>list2 #挑出偶数行
paste list1 list2>sorted_data
rm tepm list1 list2

我的问题是,能不能通过循环语句来实现这样的功能呢?我循环语句不熟悉 ,比如for i in data; do ....
发表于 2003-9-18 17:50:55 | 显示全部楼层
是有些乱,你还是把源数据文件和想要得到的格式都帖出来吧~~
 楼主| 发表于 2003-9-18 20:05:05 | 显示全部楼层
用我上边的脚本已经实现了整理
数据是mathematica输出的图形数据,其中含有数值,还有一些控制语句,但是数值排得有些乱,比如有的行是3列数据,有的是两列。我就是去掉了所有的非数字项,然后把空格转换成回车,变成一列,然后分奇偶数输出成两个文本,最后用paste合并。
 楼主| 发表于 2003-9-18 22:04:26 | 显示全部楼层
不好意思,上边那个写错了,应该是
#!/bin/bash
grep '[0-9]'<$1 |tr -d '[a-z,A-Z,[]{}\>()^]'|tr -s' ' '\n'>temp #把所有的数据排成一列
sed -n '1~2 p' temp>list1 #挑出奇数行
sed -n '2~2 p' temp>list2 #挑出偶数行
paste list1 list2>sorted_data
rm temp list1 list2
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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