shell批量替换文件内容的四种方法

shell脚本替换文件内容常用的方法有四种,会用到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 ./'

注:命令中的#可以替换成/或者|,以便于和字符串区分。

方法三: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/" #查询匹配结果

find ./ -type f -path "*.sh"|xargs sed -i 's:/data/:/databak/:g'   #查找并替换

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • SHELL 进阶 这部分的知识,我们主要是从三个方面来学习: 测试语句表达式(条件+计算)linux常见符号和命令...
    hang1720阅读 632评论 0 0
  • 第 2 章 SHELL 基础知识2.1 shell脚本我们在上面简单介绍了一下什么是shell脚本,现在我们来进一...
    LiWei_9e4b阅读 1,599评论 0 0
  • 本文将介绍Linux下使用Shell处理文本时最常用的工具: find、grep、xargs、sort、uniq、...
    程序员BUG阅读 851评论 0 15
  • 本文将介绍Linux下使用Shell处理文本时最常用的工具: find、grep、xargs、sort、uniq、...
    追风筝的少年_4cdc阅读 215评论 0 0
  • 1.今天是儿子初三生活的第一天,昨晚就和儿子商定好今早烙瓜坨熬豆浆。午餐蒸米饭、炒西红柿鸡蛋、买只烧鸡。今早5点老...
    珊珊来迟_868e阅读 587评论 1 13