sed中如何替换出新行来

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

操作系统 SunOS 5.9 sun4u sparc SUNW,Ultra-250

原文件名test仅一行

hellohellohello

要求结果:

hello

hello

hello

我使用

sed 's/hello/hello^M/g' test #^M为ctrl_V ctrl_M

不能实现,请问有何错误

sed是以行为处理单位的.

随便处理一下吧:

cat tt|sed 's/hello/hello@/g'|tr '@' '

'

版主真是信手捻来皆成贴啊

感谢感谢,回答得太快太好了

看来仅有sed是无法生成新行的,必须tr的帮助

问的是经典问题.

斑竹,要我有一行,为abcdefghijklmnopqrstuvwxy

按照每五个字符就换行怎么做?

用awk处理一下吧.

如果使用VI的话

:%s/...../&^M/g

注意:^M是由ctrl_v ctrl_m产生的

如果使用sed的话

sed 's/(.....)/1@/g' file | tr '@' '

'

如果想每m个字符换行

sed 's/(.{m,m})/1@/g' file | tr '@' '

'

献丑了

bjchenxu 回答的不错.

没有版主的提示,也就没有这个答案,呵呵

再次感谢valentine

再减少几个字吧,呵呵

如果使用sed的话

sed 's/...../&@/g' file | tr '@' '

'

如果想每m个字符换行

sed 's/.{m,m}/&@/g' file | tr '@' '

'

本贴为我想出的本主题的答案:不用tr也能解决问题

原文件名test,仅一行

hellohellohello

要求结果:

hello

hello

hello

答案:

我edit一个脚本文件

sedfile

内容为

s/hello/

&/g

运行命令

sed -f sedfile test即可增加新行

真是vi高手,我虽然不是高手,但是我喜欢vi

bjchenxu 精神可嘉啊.

不过这样更符合要求一些:

sedfile

内容改为

s/hello/&

/g

这样算是彻底的sed答案了.

哈哈,俺也学到新东西了.好象&用起来比()的子表达式形式简单啊.不过,不太好理解.

也谢谢bjchenxu .

[这个贴子最后由valentine在 2002/08/20 09:30am 编辑]

更准确的答案在这里,(看来俺开始回答的草率了些,不过tr的方法也是一种思路)

ksh:

sed 's/hello/&^J/g' test

or

sed 's/hello/hello^J/g' test

^J的输入是ctrl+V ctrl+J

Bourne shell:

sed 's/hello/&

/g' test

后是回车.

怪哉

此方法在solaris 9的csh中不行,但是在bash下却可以

另外,在bash中,可以直接回车,不用ctrl_v + ctrl_j,hehe

Bourne shell也是回车.我忘了写了,现在加上了.

csh俺一直不喜欢.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航