Chinaunix

标题: 正则批量替换 [打印本页]

作者: jackson_cu    时间: 2015-07-15 14:44
标题: 正则批量替换
大家好,

请问如果要批量替换xml文件中" <spec>H(35-37) H(2-2) * * *</spec>" 这部份内容为 " <spec>H(1-59) H(19-23) * * *</spec>"

还是正则不过关, 无法匹配到, 不知道要如何写.

find ./ -maxdepth 2 -name "config.xml" | xargs sed -i 's/xxx/<spec>H(1-59) H(19-23) * * *</spec>/g'

./dailybuild_BFC5.7.1_FAST3486AC_NET/config.xml:      <spec>H(35-37) H(2-2) * * *</spec>
./dailybuild_BFC5.7.1_EMTA62-1_NCC/config.xml:      <spec>H(35-37) H(2-2) * * *</spec>
./dailybuild_FAST3486AC_NET-PC20/config.xml:      <spec>H(51-53) H(1-1) * * *</spec>
./dailybuild_FAST3286_SSC-US-SIP/config.xml:      <spec>H(51-53) H(1-1) * * *</spec>
./dailybuild_FAST3286_SSC_debug/config.xml:      <spec>H(51-53) H(8- * * *</spec>
./dailybuild_BFC5.7.1_FAST3486AC_BCM/config.xml:      <spec>H(35-37) H(2-2) * * *</spec>
./dailybuild_FAST3686_NCC/config.xml:      <spec>H(51-53) H(1-1) * * *</spec>
./dailybuild_FAST3686_SSC-TEST/config.xml:      <spec>H(21-23) H(2-2) * * *</spec>
./dailybuild_FAST3486AC_SSC-WFA/config.xml:      <spec>H(11-13) H(3-3) * * *</spec>
./dailybuild_FAST3486AC_SSC/config.xml:      <spec>H(11-13) H(3-3) * * *</spec>
./dailybuild_FAST3686_TLC/config.xml:      <spec>H(21-23) H(2-2) * * *</spec>
./dailybuild_FAST3486AC_TLF/config.xml:      <spec>H(21-23) H(2-2) * * *</spec>
./dailybuild_FAST3286_NET/config.xml:      <spec>H(11-13) H(1-1) * * *</spec>
./dailybuild_FAST3286_BCM-SIP/config.xml:      <spec>H(35-37) H(3-3) * * *</spec>
./dailybuild_FAST3486AC_SSC-TEST/config.xml:      <spec>H(11-13) H(3-3) * * *</spec>
./dailybuild_FAST3286_SSC-O/config.xml:      <spec>H(51-53) H(1-1) * * *</spec>
./dailybuild_FAST3486AC_STOFA-SIP/config.xml:      <spec>H(11-13) H(1-1) * * *</spec>
作者: haooooaaa    时间: 2015-07-15 14:51
本帖最后由 haooooaaa 于 2015-07-15 14:52 编辑
  1. sed 's:(35-37) H(2-2:(1-59) H(19-23:' 1
复制代码

作者: jackson_cu    时间: 2015-07-15 14:54
回复 2# haooooaaa


   

对不起, 每个文件中的红色部份内容是不一样的, 要替换掉这一块.

<spec>H(35-37) H(2-2) * * *</spec>
作者: songyc_2015    时间: 2015-07-15 15:02
回复 1# jackson_cu
  1. sed -r 's#<(spec)>[^<]+</\1>#<\1>H(1-59) H(19-23) * * *</\1>#'
复制代码

作者: haooooaaa    时间: 2015-07-15 15:04
回复 3# jackson_cu


    里面的内容你可去改.
  1. awk -F'<spec>|</spec>' '{if($2~/H\(35-37\) H\(2-2\)/){print $1"<spec>H(1-59) H(19-23) * * *</spec>"}else{print}}' 1
复制代码
比如这个, print 中间的...
作者: jackson_cu    时间: 2015-07-15 15:15
回复 5# haooooaaa

这个有点复杂, 如果只是想匹配红色部份的话, 正则该如何写才好?


   
作者: Buring__    时间: 2015-07-15 15:30
回复 6# jackson_cu
  1. sed -r 's/H\([0-9]+-[0-9]+\) H\([0-9]+-[0-9]\) \* \* \*/ChinaUnix/'
复制代码

作者: jackson_cu    时间: 2015-07-15 15:36
回复 7# Buring__

对不起, 试了这个, 还是找不到

   
作者: MMMIX    时间: 2015-07-15 15:56
回复 1# jackson_cu


    直接用

  1. sed 's/spec>\([^<]*\)</spec>XXX</'
复制代码

作者: 聆雨淋夜    时间: 2015-07-15 16:09
sed -r 's#\<spec\>[^<]+\</spec\>#<spec>H(1-59) H(19-23) * * *</spec>#'
可以不可以
作者: jackson_cu    时间: 2015-07-15 16:23
回复 10# 聆雨淋夜


    对不起, 也不行. 没有匹配到.
作者: 聆雨淋夜    时间: 2015-07-15 16:52
回复 11# jackson_cu
没关系。


   
作者: vcdtwo    时间: 2015-07-16 09:37
@gaokeke123
作者: leijskg    时间: 2015-07-16 09:56
提示: 作者被禁止或删除 内容自动屏蔽
作者: 九方流云    时间: 2015-07-18 17:00
sed -r 's/H\(35-37\) H\(2-2\)/H(1-59) H(19-24)/' urfile
这个咋样?
作者: wh7211    时间: 2015-07-19 14:08
本帖最后由 wh7211 于 2015-07-19 14:10 编辑
  1. sed -r 's/H\([0-9]+-[0-9]+\) H\([0-9]+-[0-9]+\)/H(1-59) H(19-23)/' file
复制代码

作者: dolinux    时间: 2015-07-19 22:12
本帖最后由 dolinux 于 2015-07-19 22:13 编辑

sed 's/([0-9]\{1,\}-[0-9]\{1,\}) H([0-9]\{1,\}-[0-9]\{1,\})/(1-59) H(19-23)/g' urfile
  1. mengalong@mengalongdeMacBook-Air ~$ cat urfile
  2. ./dailybuild_BFC5.7.1_FAST3486AC_NET/config.xml:      <spec>H(35-37) H(2-2) * * *</spec>
  3. ./dailybuild_BFC5.7.1_EMTA62-1_NCC/config.xml:      <spec>H(35-37) H(2-2) * * *</spec>
  4. ./dailybuild_FAST3486AC_NET-PC20/config.xml:      <spec>H(51-53) H(1-1) * * *</spec>
  5. ./dailybuild_FAST3286_SSC-US-SIP/config.xml:      <spec>H(51-53) H(1-1) * * *</spec>
  6. ./dailybuild_FAST3286_SSC_debug/config.xml:      <spec>H(51-53) H(8- * * *</spec>
  7. ./dailybuild_BFC5.7.1_FAST3486AC_BCM/config.xml:      <spec>H(35-37) H(2-2) * * *</spec>
  8. ./dailybuild_FAST3686_NCC/config.xml:      <spec>H(51-53) H(1-1) * * *</spec>
  9. ./dailybuild_FAST3686_SSC-TEST/config.xml:      <spec>H(21-23) H(2-2) * * *</spec>
  10. ./dailybuild_FAST3486AC_SSC-WFA/config.xml:      <spec>H(11-13) H(3-3) * * *</spec>
  11. ./dailybuild_FAST3486AC_SSC/config.xml:      <spec>H(11-13) H(3-3) * * *</spec>
  12. ./dailybuild_FAST3686_TLC/config.xml:      <spec>H(21-23) H(2-2) * * *</spec>
  13. ./dailybuild_FAST3486AC_TLF/config.xml:      <spec>H(21-23) H(2-2) * * *</spec>
  14. ./dailybuild_FAST3286_NET/config.xml:      <spec>H(11-13) H(1-1) * * *</spec>
  15. ./dailybuild_FAST3286_BCM-SIP/config.xml:      <spec>H(35-37) H(3-3) * * *</spec>
  16. ./dailybuild_FAST3486AC_SSC-TEST/config.xml:      <spec>H(11-13) H(3-3) * * *</spec>
  17. ./dailybuild_FAST3286_SSC-O/config.xml:      <spec>H(51-53) H(1-1) * * *</spec>
  18. ./dailybuild_FAST3486AC_STOFA-SIP/config.xml:      <spec>H(11-13) H(1-1) * * *</spec>
  19. mengalong@mengalongdeMacBook-Air ~$ sed 's/([0-9]\{1,\}-[0-9]\{1,\}) H([0-9]\{1,\}-[0-9]\{1,\})/(1-59) H(19-23)/g' urfile
  20. ./dailybuild_BFC5.7.1_FAST3486AC_NET/config.xml:      <spec>H(1-59) H(19-23) * * *</spec>
  21. ./dailybuild_BFC5.7.1_EMTA62-1_NCC/config.xml:      <spec>H(1-59) H(19-23) * * *</spec>
  22. ./dailybuild_FAST3486AC_NET-PC20/config.xml:      <spec>H(1-59) H(19-23) * * *</spec>
  23. ./dailybuild_FAST3286_SSC-US-SIP/config.xml:      <spec>H(1-59) H(19-23) * * *</spec>
  24. ./dailybuild_FAST3286_SSC_debug/config.xml:      <spec>H(51-53) H(8- * * *</spec>
  25. ./dailybuild_BFC5.7.1_FAST3486AC_BCM/config.xml:      <spec>H(1-59) H(19-23) * * *</spec>
  26. ./dailybuild_FAST3686_NCC/config.xml:      <spec>H(1-59) H(19-23) * * *</spec>
  27. ./dailybuild_FAST3686_SSC-TEST/config.xml:      <spec>H(1-59) H(19-23) * * *</spec>
  28. ./dailybuild_FAST3486AC_SSC-WFA/config.xml:      <spec>H(1-59) H(19-23) * * *</spec>
  29. ./dailybuild_FAST3486AC_SSC/config.xml:      <spec>H(1-59) H(19-23) * * *</spec>
  30. ./dailybuild_FAST3686_TLC/config.xml:      <spec>H(1-59) H(19-23) * * *</spec>
  31. ./dailybuild_FAST3486AC_TLF/config.xml:      <spec>H(1-59) H(19-23) * * *</spec>
  32. ./dailybuild_FAST3286_NET/config.xml:      <spec>H(1-59) H(19-23) * * *</spec>
  33. ./dailybuild_FAST3286_BCM-SIP/config.xml:      <spec>H(1-59) H(19-23) * * *</spec>
  34. ./dailybuild_FAST3486AC_SSC-TEST/config.xml:      <spec>H(1-59) H(19-23) * * *</spec>
  35. ./dailybuild_FAST3286_SSC-O/config.xml:      <spec>H(1-59) H(19-23) * * *</spec>
  36. ./dailybuild_FAST3486AC_STOFA-SIP/config.xml:      <spec>H(1-59) H(19-23) * * *</spec>
复制代码





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