免费注册 查看新帖 |

Chinaunix

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

高手进哇,关于汉字处理的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-10-21 09:25 |只看该作者 |倒序浏览
小弟有一个文本(有些字是GBK编码的,包含不常用的字),类似这样的

阸ai
隑ai
靄ai
靉ai
餲ai
馤ai
騃ai
鯦ai
鱫ai
鴱ai
呆板aiban
爱不释手aibushishou
爱厂如家aichangrujia
挨打aida
爱戴aidai


现在有2个要求:
第一步:想取只包含一个汉字的行,包含2个以上汉字行删除,得到
阸ai
隑ai
靄ai
靉ai
餲ai
馤ai
騃ai
鯦ai
鱫ai
鴱ai

第二步:继承第一个要求的结果,把汉字后面第一个字母转为大写
阸Ai
隑Ai
靄Ai
靉Ai
餲Ai
馤Ai
騃Ai
鯦Ai
鱫Ai
鴱Ai


后半夜一直在想,看了很多资料都搞不定,拜求方法

[ 本帖最后由 Qiangxi 于 2006-10-21 09:27 编辑 ]

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2006-10-21 11:07 |只看该作者
1,
awk 'length($0)==4' urfile
2,
awk 'length($0)==4{print substr($0,1,2)toupper(substr($0,3,1))substr($0,4,1)}' urfile

论坛徽章:
0
3 [报告]
发表于 2006-10-21 16:01 |只看该作者
length($0)==4


发扬楼上的精神:
  1. awk -F'[[:alpha:]]' ' length($1) < 3 { print substr($0,1,2)toupper(substr($0,3,1))substr($0,4,1) }' urfile
复制代码

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2006-10-21 22:35 |只看该作者
perl -ne 'print if s/^(..)([a-z])/\1\u\2/'

论坛徽章:
0
5 [报告]
发表于 2006-10-23 19:38 |只看该作者
那在 vi 里面 s/\([a-z][[:alnum:]]*\)/\u\1/g 貌似也可以

论坛徽章:
0
6 [报告]
发表于 2006-10-23 22:49 |只看该作者

  1. perl -ne 'print if(/^.{3}\w*$/)'      第一个
  2. perl -ne 'if(/^.{3}\w*$/){s/^(.{3})(\w.*)$/\1\u\2/;print}'  第二个
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP