Chinaunix

标题: sed求助,匹配两行后插入文件内容 [打印本页]

作者: gzmud    时间: 2012-07-22 23:56
标题: sed求助,匹配两行后插入文件内容
本帖最后由 gzmud 于 2012-07-27 22:40 编辑

2楼已回答,谢谢2楼帮忙。

sed求助,匹配两行后插入文件内容
例:
原文:
asdfjkasdf
uioanckja
FLAG
NEXTFLAG
audfaio

待插入(forinsert.txt):
HAHAHA

插入后
asdfjkasdf
uioanckja
FLAG
NEXTFLAG
HAHAHA
audfaio


作者: yinyuemi    时间: 2012-07-23 00:36
回复 1# gzmud


    sed -e '/FLAG/{n;n;r forinsert.txt' -e '}'
作者: 英语盲学linux    时间: 2012-07-23 08:55
  1. sed '/FLAG/r forinsert.txt' file
复制代码

作者: blackold    时间: 2012-07-23 09:02
回复 1# gzmud


    如何理解“匹配两行”?

asdfjkasdf
uioanckja
FLAG
foobar
NEXTFLAG
可在此插入?

这也算匹配两行?
作者: gzmud    时间: 2012-07-27 22:28
回复 4# blackold
应该是联系的两行:
FLAG
NEXTFLAG
最好能使用正则表达式匹配。
如果是匹配单行的话,难度不大。
谢谢。
   
作者: gzmud    时间: 2012-07-27 22:39
回复 2# yinyuemi


    谢谢,这个能用, 改进后能正则表达式匹配

    sed -e '/^Flag1/{n;/^Flag2/{r file.toadd' -e '}}' file.foradd


有点不明白 -e 连接两个本来应该连在一起的是怎么回事?

手册上好像没说,能解释一下吗?

作者: blackold    时间: 2012-07-27 22:40
回复 5# gzmud


    问题描述不清楚。
作者: gzmud    时间: 2012-07-28 11:11
回复 7# blackold


应该是连续的两行:

FLAG
NEXTFLAG

后面插入一个文件file.toadd的内容。


二楼的回复已经有一定用处,我根据这个方法修改后的具体实现放到6楼了。

也谢谢你的帮忙
作者: guogang225    时间: 2012-07-28 23:02
这样更好理解一点:
sed -e '/^FLAG/n' -e '/^NEXTFLAG/r file.toadd' test.txt
作者: blackold    时间: 2012-07-29 07:41
回复 6# gzmud


    因为 r 命令关系,r会把之后的文本当前文件名。
  1. sed '/^FLAG/{n;/.*FLAG$/r urfile2
  2. quote> }' urfile
  3. asdfjkasdf
  4. uioanckja
  5. FLAG
  6. NEXTFLAG
  7. HAHAHA
  8. audfaio
复制代码
  1. sed -e '/^FLAG/{n;/.*FLAG$/r urfile2' -e '}' urfile
复制代码

作者: blackold    时间: 2012-07-29 08:01
回复 9# guogang225


    这个命令和上面的不同。
作者: guogang225    时间: 2012-07-29 10:40
回复 11# blackold
对 r file.toadd' -e'不太明白,大牛能否给解释下,谢谢!

   
作者: blackold    时间: 2012-07-29 11:14
本帖最后由 blackold 于 2012-07-29 11:15 编辑

回复 12# guogang225


   
-e '/^FLAG/{n;/.*FLAG$/r urfile2' -e '}'


这是两个选项。

你单独看 r urfile2 -e '}' 怎么看得懂?
作者: guogang225    时间: 2012-07-29 12:12
回复 13# blackold


    明白了,多谢指导




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2