免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2113 | 回复: 11
打印 上一主题 下一主题

一个字符处理的问题,大家帮忙看看。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-05-26 17:53 |只看该作者 |倒序浏览
sed 脚本

  1. s|^\([0-9]*\.\)\([\ \,\.\!\'\?\"a-zA-Z0-9]*\)\([.\!\?]\)\(.*\)$|\1\2\3\n\4\n|
复制代码


原始文件截取。

  1. 990. When I was young, I'd listen to the radio, waiting for my favorite songs.当我还是个小女孩的时候,我常听着收音机,等待我最喜欢的歌。
  2. 991. I'm certain he'll go to see the film, because he's bought a ticket.我肯定他会去看电影的,冈为他把票都买好了。
  3. 992. Unfortunately you'll have to pay the fine before you check those books out.在你借书之前你要先付清罚款。
  4. 993. Hi! You guys keep talking so loudly that I have to speak at the top my voice!哎!你们一直这样大声讲话,我都不得不扯着嗓子说话了。
  5. 994. We should not only know the theory but also how to apply it to practice.我们不仅要知道理论,还要知道怎样把理论应用于实践。
  6. 995. Combining exercise with the diet may be the most effective way to lose weight. 运动与节食结合也许是减肥最有效的途径。
  7. 996. The maximum weight allowance is 60 kilos per traveler, excluding hand luggage. 每个旅客托运的行李最大重量限额是60公斤,手提行李除外。
  8. 997. You are just putting on a little weight. I believe you'll get that off easily.你只是稍微胖了些.很快就会恢复的。
  9. 998. In many countries, more and more companies are replacing people with computers.在许多国家有越来越多的公司使用电子计算机来代替人。
  10. 999. There are mice next to the refrigerator, under the sink and inside the cupboard!冰箱边、洗碗槽下,还有橱柜里面都有老鼠!
复制代码


最终效果截取。


  1. 990. When I was young, I'd listen to the radio, waiting for my favorite songs.
  2. 当我还是个小女孩的时候,我常听着收音机,等待我最喜欢的歌。

  3. 991. I'm certain he'll go to see the film, because he's bought a ticket.
  4. 我肯定他会去看电影的,冈为他把票都买好了。

  5. 992. Unfortunately you'll have to pay the fine before you check those books out.
  6. 在你借书之前你要先付清罚款。

  7. 993. Hi! You guys keep talking so loudly that I have to speak at the top my voice!
  8. 哎!你们一直这样大声讲话,我都不得不扯着嗓子说话了。

  9. 994. We should not only know the theory but also how to apply it to practice.
  10. 我们不仅要知道理论,还要知道怎样把理论应用于实践。

  11. 995. Combining exercise with the diet may be the most effective way to lose weight.
  12. 运动与节食结合也许是减肥最有效的途径。

  13. 996. The maximum weight allowance is 60 kilos per traveler, excluding hand luggage.
  14. 每个旅客托运的行李最大重量限额是60公斤,手提行李除外。

  15. 997. You are just putting on a little weight. I believe you'll get that off easily.
  16. 你只是稍微胖了些.很快就会恢复的。

  17. 998. In many countries, more and more companies are replacing people with computers.
  18. 在许多国家有越来越多的公司使用电子计算机来代替人。

  19. 999. There are mice next to the refrigerator, under the sink and inside the cupboard!
  20. 冰箱边、洗碗槽下,还有橱柜里面都有老鼠!
复制代码


但是我的代码不能完全处理,有些行,如

  1. 5. My god! 天哪!


  2. 6. No way!
  3. 不行!
复制代码

就会变成这个样子,很奇怪的问题。。。。


原始文件link  http://sh.be10.com/temp/ssss.txt

论坛徽章:
0
2 [报告]
发表于 2005-05-27 09:44 |只看该作者

一个字符处理的问题,大家帮忙看看。

简单的说明一下你要怎样处理?转换规则是什么?
反正我看上面得sed看的比较郁闷,这样别人就可避免按照你的思路走。

论坛徽章:
0
3 [报告]
发表于 2005-05-27 10:18 |只看该作者

一个字符处理的问题,大家帮忙看看。

我原来用sed处理中文的文件会有问题,用perl ,c++都可以。

论坛徽章:
0
4 [报告]
发表于 2005-05-27 16:06 |只看该作者

一个字符处理的问题,大家帮忙看看。

是你搞得太复杂了
split.sed:

  1. #! /usr/bin/sed -f
  2. # first, insert an extra newline for each line
  3. a\

  4. # now, notice that sed uses greedy match,
  5. # you only need to specify the non-chinese
  6. # pattern, which is simpler
  7. s/[-0-9a-zA-Z.,!?'"_<space><tab>]\+/&\
  8. /
  9. # for each line, the first chinese char would
  10. # break the pattern. just replace the match
  11. # with & followed by a newline
复制代码

论坛徽章:
0
5 [报告]
发表于 2005-05-27 16:25 |只看该作者

一个字符处理的问题,大家帮忙看看。

s|^\([0-9]*\.\)\([\ \,\.\!\'\?\"a-zA-Z0-9]*\)\([.\!\?]\)\(.*\)$|\1\2\3\n\4\n|
改为
s|^\([0-9]*\.\)\([\ \,\.\!\'\?\"a-zA-Z0-9]*\)\\([[]]\)\(.*\)$|\1\2\3\n\4\n|
试一下

论坛徽章:
0
6 [报告]
发表于 2005-05-27 16:42 |只看该作者

一个字符处理的问题,大家帮忙看看。

都不行。。。。:(

论坛徽章:
0
7 [报告]
发表于 2005-05-27 16:46 |只看该作者

一个字符处理的问题,大家帮忙看看。

如果允许用这种char list的话, 可以这么写

  1. s/[0-9a-zA-Z[:punct:][:space:]]\+/\n&\n/
复制代码

论坛徽章:
0
8 [报告]
发表于 2005-05-27 16:48 |只看该作者

一个字符处理的问题,大家帮忙看看。

我前面那个你当然不能直接拿来用, 要把里面的<space>改成空格, <tab>改成tab才行啊

论坛徽章:
0
9 [报告]
发表于 2005-05-27 16:54 |只看该作者

一个字符处理的问题,大家帮忙看看。

galilette@socrate ~/tmp $ sed '10q' ssss.txt
1. I see. 我明白了.
2. I quit! 我不干了!
3. Let go! 放手!
4. Me too. 我也是.
5. My god! 天哪!
6. No way! 不行!
7. Come on. 来吧(赶快)
8. Hold on. 等一等.
9. I agree. 我同意.
10. Not bad. 还不错.
galilette@socrate ~/tmp $ sed '10q' ssss.txt | sed 's/[0-9a-zA-Z[][]]\+/\n&\n/'

1. I see.
我明白了.

2. I quit!
我不干了!

3. Let go!
放手!

4. Me too.
我也是.

5. My god!
天哪!

6. No way!
不行!

7. Come on.
来吧(赶快)

8. Hold on.
等一等.

9. I agree.
我同意.

10. Not bad.
还不错.
galilette@socrate ~/tmp $

论坛徽章:
0
10 [报告]
发表于 2005-05-27 18:06 |只看该作者

一个字符处理的问题,大家帮忙看看。

见鬼了。。。

我的sed版本
1 #> sed -V
GNU sed version 4.0.7

代码工作不正常。。。
有的可以,有的不行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP