Chinaunix

标题: 高手进哇,关于汉字处理的问题 [打印本页]

作者: Qiangxi    时间: 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 编辑 ]
作者: 寂寞烈火    时间: 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
作者: awk就是awp加ak    时间: 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
复制代码

作者: woodie    时间: 2006-10-21 22:35
perl -ne 'print if s/^(..)([a-z])/\1\u\2/'
作者: awk就是awp加ak    时间: 2006-10-23 19:38
那在 vi 里面 s/\([a-z][[:alnum:]]*\)/\u\1/g 貌似也可以
作者: lovesaka    时间: 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}'  第二个
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2