LinuxSir.cn,穿越时空的Linuxsir!

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

如何进行文本编辑和整理[已解决]

[复制链接]
发表于 2004-1-15 21:15:34 | 显示全部楼层 |阅读模式
我有一个文件test.txt内容如下
1aaabb
1cccccc
1ddeeeee
1
1fffff
1gg
1aaabb
1cccccc
1ddeeeee
1
1fffff
1gg
需要整理成为如下
aaa,bb,cccccc, ,fffff,gg
aaa,bb,cccccc, ,fffff,gg
请高手指点,急需
发表于 2004-1-15 21:26:18 | 显示全部楼层
格式固定么?
 楼主| 发表于 2004-1-15 21:47:08 | 显示全部楼层
格式固定,还有很多记录,是一样的
发表于 2004-1-15 22:35:27 | 显示全部楼层
这个这个。。。。用perl 好点。。
发表于 2004-1-15 23:03:08 | 显示全部楼层
最初由 ioling 发表
格式固定,还有很多记录,是一样的

那就好!,我试试看吧 :confused:
用perl也一样遇到正则,
发表于 2004-1-15 23:13:46 | 显示全部楼层
我的想法是把一行的每一个字符读入一个数组,然后再排序。但很久没看过perl了。都去看C了 等着被打。。。
发表于 2004-1-15 23:39:07 | 显示全部楼层
实在没有想出来好的办法~~,来个笨点的吧
[/home/javalee]cat a
1aaabb
1cccccc
1ddeeeee
1
1fffff
1gg
1aaabb
1cccccc
1ddeeeee
1
1fffff
1gg
  1. [/home/javalee]cat ab
  2. cat a|sort|cut -b2-|sed -n '1,$p;n'|tr -d ' '|tr -d '\n'>a1
  3. cat a|sort|cut -b2-|sed -n '1,$p;n'|tr -d ' '|tr -d '\n'>a2
  4. cat a1|sed 's/./&\
  5. /g'>b
  6. cat a1|sed 's/./&\
  7. /g'>c
  8. a1=$(for i in a b c d e f g;do
  9. echo -n $(cat b|sed -n /${i}/p);echo
  10. done|tr -d ' '|tr '\n' ',')
  11. a2=$(for i in a b c d e f g;do
  12. echo -n $(cat c|sed -n /${i}/p);echo
  13. done|tr -d ' '|tr '\n' ',')
  14. echo $a1|cut -b1-$((${#a1}-1))>a1
  15. echo $a2|cut -b1-$((${#a1}-1))>a2
  16. rm b c
复制代码
结果:
[/home/javalee]cat a1 a2
aaa,bb,cccccc,dd,eeeee,fffff,gg
aaa,bb,cccccc,dd,eeeee,fffff,gg
发表于 2004-1-15 23:42:51 | 显示全部楼层
最初由 devel 发表
我的想法是把一行的每一个字符读入一个数组,然后再排序。但很久没看过perl了。都去看C了 等着被打。。。

相信perl一定做的很好,相信也一定有更简便的方法
to devel:当着perl的版主却"不误正业",该打PP :p
 楼主| 发表于 2004-1-16 08:18:46 | 显示全部楼层
针对性太强,规律一样,但每条记录不一样,考虑用c,给一个c吧,谢谢!!
发表于 2004-1-16 10:29:51 | 显示全部楼层
对你的规律不太明白,是类似这样吗?
[PHP]
0$ cat a
1aaabb
1cccccc
1ddeeeee
1
1fffff
1gg
1aaabb
1cccccc
1ddeeeee
1
1fffff
1gg
0$ cat a.sed
#!/bin/sed -f
{
N; N; N; N; N
s/\n/,/g
s/,1,/, ,/g
s/,1$/, /g
s/1,$/ ,/g
s/^1//
s/,1/,/g
}
0$ sed -f a.sed a
aaabb,cccccc,ddeeeee, ,fffff,gg
aaabb,cccccc,ddeeeee, ,fffff,gg
[/PHP]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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