LinuxSir.cn,穿越时空的Linuxsir!

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

请问如何把全角字符转换成半角字符?

[复制链接]
发表于 2004-7-23 16:24:35 | 显示全部楼层 |阅读模式
有的文件里英文字符使用了全角字符,
很难看,
能否把它们转换成半角字符吗?
发表于 2004-7-23 16:36:27 | 显示全部楼层
看说明呀,这和你用的输入法有关,如果是在X下的话,那一般都有和windows一样的方法,如果是在bash下用的zhcon,你可以用ctrl+alt+h,总之都会有说明的。注意看你刚进入输入法时的屏幕输出内容。
发表于 2004-7-23 16:41:21 | 显示全部楼层
如果是一篇文档中含有全角的英文字符,转换起来比较麻烦了,需要一份
对应的表格
 楼主| 发表于 2004-7-23 16:43:38 | 显示全部楼层
是文档中的全角英文字符,
不是手动输入的;
比如那篇awk详解中,
有不少英文字符采用了全角字符,
如果使用sed ‘y///’能否可以呢?
当然最好是有能够指代所有全角或者半角字符的方法。
发表于 2004-7-23 16:50:28 | 显示全部楼层
awk与sed都不支持unicode。
关于全角的问题最好使用perl或者python这类高级脚本语言来解决。
发表于 2004-7-23 17:00:32 | 显示全部楼层
最初由 aaccdd 发表
是文档中的全角英文字符,
不是手动输入的;
比如那篇awk详解中,
有不少英文字符采用了全角字符,
如果使用sed ‘y///’能否可以呢?
当然最好是有能够指代所有全角或者半角字符的方法。

用sed的y命令是可以的,

  1. /home/lee#cat tmp
  2. 这是一个文档 a this is 文档
  3. /home/lee#cat tmp|sed 'y/abcdefghijklmnopqrstuvwxyz /abcdefghijklmnopqrstuvwxyz'
  4. 这是一个文档 a this is 文档
复制代码

写成一个文件:[php]
/home/lee#typeset -f con
function con {
    sed "1,\$y/abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJK
LMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ/" $1
}[/php]
/home/lee#cat tmp
0,这是(this)一个样本文件,
1,this is a example file
linuxsir.org
ABCD
/home/lee#con tmp
0,这是(this)一个样本文件,
1,this is a example file
linuxsir.cn
ABCD
/home/lee#
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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