[demo]sed字符串替换

[demo]sed字符串替换

找出Z:\A、Z:\B目录下所有内容带“APPLE“的文件,把"APPLE"替换成"ORANGE",并输出到Z:\C相应的目录下

  1  # !/bin/sh
  2  #  Auto replace the files' content and copy them to the specified directory.
  3 
  4  SEARCH_WORD = ' APPLE '
  5  REPLACE_WORD = ' ORANGE '
  6 
  7  SRC_DIR_ARRAY = (
  8  ' Z:/A '
  9  ' Z:/B '
 10  )
 11 
 12  OUTPUT = ' Z:/C '
 13 
 14  global_lastDir_pre = ''
 15  declare  - i count = 0
 16 
 17  function checkFileDir
 18  {
 19      local fileNameWithPath = $ 1
 20      local dirPre = ${fileNameWithPath %/* }
 21      local tempPath = ${OUTPUT} / ${dirPre}
 22      global_lastOutput = $OUTPUT / $fileNameWithPath
 23      
 24       if  [ !  - " $tempPath "  ]
 25      then
 26          tar  - cf  -   " $fileNameWithPath "   |  tar  - " $OUTPUT "   - xf  -
 27          rm  - " $global_lastOutput "
 28      fi
 29 
 30  }
 31 
 32  function replaceFile
 33  {
 34      local fileNameWithPath = ${ 1 # */}
 35      local regix = $ 2
 36      local thisDir_pre = ${fileNameWithPath %/*
 37      
 38       if  [  " $thisDir_pre "   =   " $global_lastDir_pre "  ]
 39      then
 40          sed  " $regix "   " $fileNameWithPath "   >   " $global_lastOutput "
 41           continue
 42      fi
 43 
 44      checkFileDir  " $fileNameWithPath "
 45      global_lastDir_pre = $thisDir_pre
 46 
 47      sed  " $regix "   " $fileNameWithPath "   >   " $global_lastOutput "
 48  }
 49 
 50  function echoNote
 51  {
 52      echo  " Wrong directory detected. Please check it ! "
 53  }
 54 
 55  function init
 56  {
 57       for  src_dir  in  ${SRC_DIR_ARRAY[ * ]}
 58      do
 59           if  [ !  - " $src_dir "  ]
 60          then
 61              echoNote
 62              echo  " SRC_DIR_ARRAY: '$src_dir' "
 63              exit
 64          fi
 65      done
 66      
 67       if  [ !  - " $OUTPUT "  ]
 68      then
 69          echoNote
 70          echo  " OUTPUT: '$OUTPUT' "
 71          exit
 72      fi
 73      
 74      rm  - rf  " $OUTPUT "
 75      mkdir  " $OUTPUT "
 76 
 77  }
 78 
 79 
 80  echo  - " ----------------------------BEGIN--------------------------------\n "
 81 
 82  init
 83  for  src_dir  in  ${SRC_DIR_ARRAY[ * ]}
 84  do
 85 
 86      cd  " $src_dir "
 87      list = `find .  - type f  |  xargs grep  - " $SEARCH_WORD " `
 88       # list=`find . -type f | xargs grep -il "$SEARCH_WORD"`    # ignore case
 89       for  line  in  $list
 90      do
 91          grep  - Hn  " $SEARCH_WORD "   " $line "   >>   " $OUTPUT/log.txt "
 92           # grep -iHn "$SEARCH_WORD" "$line" >> "$OUTPUT/log.txt"    # ignore case
 93          count = count + 1
 94          echo $line
 95          replaceFile  " $line "   " s/$SEARCH_WORD/$REPLACE_WORD/g "
 96           # replaceFile "$line" "s/$SEARCH_WORD/$REPLACE_WORD/Ig"    # ignore case
 97      done
 98 
 99  done
100 
101  echo  - " \n----------summary---------- "
102  echo  " total files size: $count "
103 
104  echo  " ----------------------------END-------------------------------- "
105 

你可能感兴趣的:([demo]sed字符串替换)