LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1857|回复: 9

win2k下的gnu工具--sed,如何往文本插入一行

[复制链接]
发表于 2004-7-2 18:50:54 | 显示全部楼层 |阅读模式
假设,有a.txt,里面的内容如下:
------------------------------
aaaaaaa
bbbbbbb
ccccccc
------------------------------
现在,要往a.txt中的d第一行和第二行之间插入一行内容为:
------------------------------
ddddddddddd
------------------------------
的文本,
我是这样作的,在win2k的cmd下,输入:
>sed -e "s/aaaaaaa/i\
>ddddddddddd" a.txt > b.txt

但是,win2k的cmd下,马上打印输出:
>ddddddddddd" a.txt > b.txt
而不是把插入的行和原来文件的内容输入到b.txt,

不知道,我这样是否错了?
请大家教教我这个小虾米。谢谢!^_^
发表于 2004-7-2 19:38:26 | 显示全部楼层
M$下没有用过,linux是这样用的
  1. sed '2i\string' file
  2. sed '1a\string' file
复制代码

/home/lee/test #sed --version
GNU sed version 4.0.5
 楼主| 发表于 2004-7-4 17:14:36 | 显示全部楼层
谢谢!在win2k下,照着这个方法,可以插入和追加。谢谢KornLee。
^_^
 楼主| 发表于 2004-7-4 17:17:13 | 显示全部楼层
还有个问题:
如果,我想通过找到匹配的表达式,在匹配的表达式后面插入一行文本,该
以什么样的形式,才能达到这样的效果。
谢谢!^_^
发表于 2004-7-4 17:27:49 | 显示全部楼层
example:

  1. /home/lee #echo "a\nc\nd\ne"
  2. a
  3. c
  4. d
  5. e
  6. /home/lee #echo "a\nc\nd\ne"|sed '[color=red]/^a/[/color]a\b'
  7. a
  8. [color=red]b[/color]
  9. c
  10. d
  11. e
复制代码
 楼主| 发表于 2004-7-4 17:30:04 | 显示全部楼层
哈哈,我自己想出来了,是这样的:
比如有文件file1内容如下:
-----------------
okok
hoho
haha
-----------------
欲在hoho的下行插入一行world,但是是通过查找匹配的表达式
来进行的,可用如下方式:
sed "/hoho/a\world" file1 > file2
 楼主| 发表于 2004-7-4 17:38:13 | 显示全部楼层
谢谢,KornLee。
刚才,自己试出来后,没有刷新(所以没有看到你的回帖,没想到这么快就
回了,不好意思),就直接把帖子贴上去了。
要是没有你先前的提示,我自己也试不出来。谢谢KornLee。^_^
 楼主| 发表于 2004-7-5 19:15:52 | 显示全部楼层
如果是早期的sed.exe,就是版本号低于3.0,那样的sed.exe应该如何在指定的
文本文件中插入一行文本呢?
发表于 2004-7-5 19:40:47 | 显示全部楼层
没用过sed.exe,不过unix下的sed早期的是需要转义的
  1. echo "a\nb"|sed '1a\
  2. > 3'
  3. a
  4. 3
  5. b
复制代码
发表于 2004-7-6 13:44:01 | 显示全部楼层

嗯,是阿

对于早期的i,a,y命令都是需要换行的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表