歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

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俺一直不喜歡.




Copyright © Linux教程網 All Rights Reserved