分页: 1 / 1

在n个字符之后添加一个换行符

发表于 : 2010-08-01 22:10
tusooa
rt.
ps:sed处理中文和英文字符采用相同的策略,即'a'和'甲'都算1个字符。怎么让sed这样:

代码: 全选

sed -re 's@.{4}@&\n@g' <<< '甲乙丙丁abcdefg'
甲乙
丙丁
abcd
efg

Re: 在n个字符之后添加一个换行符

发表于 : 2010-08-02 14:31
trigger
不好弄,utf8汉字是三个字节
LANG=C也不行,{4}把字拆散了

代码: 全选

$ LANG=C sed -re 's@.{4}@&\n@g' <<< '甲乙丙丁abcdefg'
甲�
����
�丁
abcd
efg
{6}不散,英文又不对了

代码: 全选

$ LANG=C sed -re 's@.{6}@&\n@g' <<< '甲乙丙丁abcdefg'
甲乙
丙丁
abcdef
g
等ee来

Re: 在n个字符之后添加一个换行符

发表于 : 2010-08-02 14:43
xiooli
先把英文散了,再散汉字。

Re: 在n个字符之后添加一个换行符

发表于 : 2010-08-02 16:25
eexpress
utf8汉字是三个字节
3-6哦。
除开你使用脚本处理,汉字一个算一个。如果按照字节处理,那碰死都不行的。

Re: 在n个字符之后添加一个换行符

发表于 : 2010-08-02 16:58
trigger
eexpress 写了:
utf8汉字是三个字节
3-6哦。
除开你使用脚本处理,汉字一个算一个。如果按照字节处理,那碰死都不行的。
怎么办呢?ee想个法子

Re: 在n个字符之后添加一个换行符

发表于 : 2010-08-02 18:01
link_01

代码: 全选

echo '甲乙丙丁abcdefg'|sed  -r 's/[^a-zA-Z0-9]{2}/&\n/g'  |sed -r 's/[a-zA-Z0-9]{4}/&\n/g'

代码: 全选

echo '甲乙丙丁abcdefg'|sed  -r 's/[^a-zA-Z0-9]{2}/&\n/g'  |sed -r 's/\w{4}/&\n/g'
不懂,瞎琢磨。

Re: 在n个字符之后添加一个换行符

发表于 : 2010-08-02 18:57
tusooa

代码: 全选

$ sed -re 's/[a-zA-Z_\-\:\d]{4}/&\n/g' -e 's/[^a-zA-Z_\-\:\d]{2}/&\n/g' <<< '甲乙丙丁abcdefg'
甲乙
丙丁
abcd
efg

Re: 在n个字符之后添加一个换行符

发表于 : 2010-08-02 22:04
TheRedIsEast

代码: 全选

awk -v FIELDWIDTHS="2 2 4 3" '{print $1,$2,$3,$4}' OFS="\n"

Re: 在n个字符之后添加一个换行符

发表于 : 2010-08-03 23:56
tusooa
ls,

代码: 全选

>> awk -v FIELDWIDTHS="2 2 4 3" '{print $1,$2,$3,$4}' OFS="\n" <<< '嘿嘿,小样,没用了吧'
�
 ��
   ���
      ��
        % 

Re: 在n个字符之后添加一个换行符

发表于 : 2010-08-05 23:58
allanxia86
最近刚开始学习sed,请问下各位大侠:

代码: 全选

sed -re 's@.{4}@&\n@g' <<< '甲乙丙丁abcdefg'
这个s参数的用法怎么和

代码: 全选

s/pattern/replacement/[flag]
不同啊,'@'什么意思啊?哪里有文档可以看看?

代码: 全选

[a-zA-Z_\-\:\d]
这个里面的

代码: 全选

_\-\:\d
什么意思啊?请各位大侠不吝赐教

Re: 在n个字符之后添加一个换行符

发表于 : 2010-08-06 0:17
BigSnake.NET
你是想怎么样, 中文究竟当几个字符处理?