shell腳本替換文件內(nèi)容常用的方法有四種,會(huì)用到sed,find 眉尸,grep谈息,awk等命令缘屹。
方法一:find -name '要查找的文件名' | xargs perl -pi -e 's|被替換的字符串|替換后的字符串|g'
代碼示例:
find -name 'pom.xml' | xargs perl -pi -e 's|http://repo1.maven.org/|http://registry.taobao.com/groups/public|g'
方法二:sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目錄`
代碼示例:
sed -i "s#10.220.96.205:8022#11.1.14.145#g" 'grep mahuinan -rl ./'
注:命令中的#可以替換成/或者|,以便于和字符串區(qū)分侠仇。
方法三:grep "原字符串" * -R | awk -F: '{print $1}' | sort | uniq | xargs sed -i 's/原字符串/新字符串/g'
代碼示例:
grep "master" * -R | awk -F: '{print $1}' | sort | uniq | xargs sed -i 's/master/release/g'
批量替換配置文件中的IP:
grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" * -R | awk -F: '{print $1}' | sort | uniq | xargs sed -i 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/172\.0\.0\.1/g'
方法四: find 所在目錄 -type f -path "文件名稱"|xargs sed -i 's: 原字符串 : 新字符串 :g'
代碼示例:
find ./ -name "*"|xargs grep "/data/" #查詢匹配結(jié)果
find ./ -type f -path "*.sh"|xargs sed -i 's:/data/:/databak/:g'? ?#查找并替換