LinuxSir.cn,穿越时空的Linuxsir!

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

【解决】一个汉字占3 char,但显示却占2 char,如何对齐?

[复制链接]
发表于 2010-4-20 20:51:10 | 显示全部楼层 |阅读模式
【办法】
采用2楼的解决办法,如下:
[php]
LEN=$((for i in "$@"; do echo "$i"; done) | wc -L)
for i in "$@"; do
    gbk=$(echo "$i"|iconv -f utf8 -t gbk)
    printf "%${LEN}s: balabala" "$gbk" | iconv -f gbk -t utf8
done
[/php]

【问题】
我原本是打算用printf命令来实现对齐,可是失败了,原因如题所示。
[php]
LEN=$((for i in "$@"; do echo "$i"; done) | wc -L)
for i in "$@"; do
    printf "%${LEN}s: balabala" "$i"
done
[/php]

有中文的时候会出现严重的不对其(一个中文缩回一个英文字宽)

各位,有shell中实现输出对齐的办法吗?
发表于 2010-4-20 23:10:55 | 显示全部楼层
数据存储用gbk,打印之后用iconv转为utf8
回复 支持 反对

使用道具 举报

发表于 2011-5-25 09:11:35 | 显示全部楼层
NND,终于让我给搜到了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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