当前位置:Linux教程 - Linux综合 - sed中如何替换出新行来

sed中如何替换出新行来

  操作系统 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 ttsed '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俺一直不喜欢.

(出处:http://www.sheup.com)