Chinaunix

标题: 如何用awk或sed实现多文件指定内容插入??? [打印本页]

作者: tank064    时间: 2013-01-04 11:57
标题: 如何用awk或sed实现多文件指定内容插入???
本帖最后由 tank064 于 2013-01-04 15:17 编辑

设有文件 file   file1   
两个文件的基本内容大体相同,只有一些配置不一样,如:
file:
*******
<config>
     para1  key1
     para2  key2
     para3  key3
</config>
*******

file1:
******
<config>
    para1  kk1
    para2  kk2
    para3  kk3
</config>
******

先要实现file内容如下或者屏幕输出如下:
file:
******
<config>
     para1  key1
     para2  key2
     para3  key3
</config>
<config>
    para1  kk1
    para2  kk2
    para3  kk3
</config>
******

用sed,或awk 如何实现?(ps: 星号表示上下文略去)

作者: kernel69    时间: 2013-01-04 15:21
  1. perl -lne 'print if m#<config>#..m#</config>#' file file1
复制代码
回复 1# tank064


   
作者: tank064    时间: 2013-01-04 16:05
回复 2# kernel69
....这是perl的哦(我不懂..),,, 有木有sed,awk版本的么...

   
作者: kernel69    时间: 2013-01-04 17:19
能用否?
回复 3# tank064


   
作者: tank064    时间: 2013-01-04 17:26
可以用
回复 4# kernel69


   
作者: kernel69    时间: 2013-01-04 17:56
sed
  1. sed -n '/<config>/,/<\/config>/p'
复制代码
回复 5# tank064


   
作者: tank064    时间: 2013-01-04 18:13
这个不行吧...
回复 6# kernel69


   
作者: kernel69    时间: 2013-01-04 22:20
有报错?还是怎么样?
回复 7# tank064


   
作者: tank064    时间: 2013-01-05 11:48
本帖最后由 tank064 于 2013-01-05 11:50 编辑

有个问题,这样会把<config>前面的行,</config>面的行都丢掉,
能在这个基础上 ,把<config>前面  </config>后面的行都保留下来呢  
回复 8# kernel69


   
作者: kernel69    时间: 2013-01-05 12:00
没看明白……
回复 9# tank064


   
作者: tank064    时间: 2013-01-05 12:18
本帖最后由 tank064 于 2013-01-05 12:19 编辑
  1. [benny@qycn ~]$ cat config.xml.91wan
  2.                  <VERSION value="1.3.0" />
  3. <SITES>
  4. test5
  5. </SITES>
  6. <SITES>
  7. test6
  8. </SITES>
  9. <SITES>
  10. test7
  11. </SITES>
  12. <SITES>
  13. test8
  14. </SITES>
  15. <SITES>
  16. test9
  17. </SITES>
  18.                 <sounds source="">
  19. [benny@qycn ~]$ cat config.xml.6711
  20.                  <VERSION value="1.3.0" />
  21.                 <SITES>
  22.                         test1
  23.                 </SITES>
  24.                 <SITES>
  25.                         test2
  26.                 </SITES>
  27.                 <SITES>
  28.                         test3
  29.                 </SITES>
  30.                 <SITES>
  31.                         test4
  32.                 </SITES>
  33.                 <sounds source="">

复制代码
最后整成一个:
  1. <VERSION value="1.3.0" />
  2.                 <SITES>
  3.                         test1
  4.                 </SITES>
  5.                 <SITES>
  6.                         test2
  7.                 </SITES>
  8.                 <SITES>
  9.                         test3
  10.                 </SITES>
  11.                 <SITES>
  12.                         test4
  13.                 </SITES>
  14. <SITES>
  15. test5
  16. </SITES>
  17. <SITES>
  18. test6
  19. </SITES>
  20. <SITES>
  21. test7
  22. </SITES>
  23. <SITES>
  24. test8
  25. </SITES>
  26. <SITES>
  27. test9
  28. </SITES>
  29.                 <sounds source="">
复制代码
该如何弄呢?
回复 10# kernel69


   
作者: moperyblue    时间: 2016-10-06 23:26

  1. sed '1{x;s#.*#sed "/config/{:a;N;/<\\//!ba;b};d" file1#e;x};/<\/config>/G' file
复制代码





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