shell - sed中如何替换出新行来
2014-04-21 18:09
417 查看
sed中如何替换出新行来
2004-04-23 15:18 pm
<font 作者:作者来自:Linux文档
现载:Www.8s8s.coM
地址:无名
操作系统 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俺一直不喜欢.
2004-04-23 15:18 pm
<font 作者:作者来自:Linux文档
现载:Www.8s8s.coM
地址:无名
操作系统 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俺一直不喜欢.
相关文章推荐
- linux批量替换文件内容3种方法(perl,sed,shell)
- Shell脚本运行hive语句 | hive以日期建立分区表 | linux schedule程序 | sed替换文件字符串 | shell推断hdfs文件文件夹是否存在
- 【Shell】使用sed命令替换文件中的某一行
- shell学习第十天----sed查找与替换
- linux批量替换文件内容3种方法(perl,sed,shell)
- sed 用法之如何替换换行符
- Shell命令行下如何查找并替换多个文件中的字符
- 如何替换某文件中的所有的特定字符?---linux sed命令(文本编辑命令) (转载)
- linux批量替换文件内容3种方法(perl,sed,shell)
- sed替换 - 含反斜杠(/)和Shell变量
- linux批量替换文件内容3种方法(perl,sed,shell)
- linux批量替换文件内容3种方法(perl,sed,shell)
- 如何替换DrmShell.dll.txt
- linux批量替换文件内容3种方法(perl,sed,shell)
- linux批量替换文件内容3种方法(perl,sed,shell)
- shell sed 替换某行内容
- Sed 删除匹配行,匹配的字符用Shell变量替换,且变量里含有斜杠“/”时,无法删除 解决办法
- shell 文件内容替换 sed用法
- shell ,sed命令用变量替换字符串,单引号改为双引号
- Shell脚本执行hive语句 | hive以日期建立分区表 | linux schedule程序 | sed替换文件字符串 | shell判断hdfs文件目录是否存在