shell记录

记一次面试问题,如何查询文件夹下所有文件中包含某个字符并且做替换

  • 上网查了下一般做法是使用sed命令,确实语法简单,但是当时回答使用awk

    • 好吧硬着头皮写下来

      1
      find . -type f | xargs -i  awk -v info="{}" '{if ($0~"bb");gsub("bb","tihuan",$0); {print info,$0}}' {}
    • sed版本

      1
      sed -i "s/bb/tihuan/g" `grep -rl "" ./`

“bb”为查找关键字,”tihuan”为替换字符
摘抄网上的一段脚本改造,利用awk的sub指令

1
2
for file in $(find . -type f);do awk '{sub(/tihuan/,"YYY");print}' $file ;done
只是在控制台进行了打印并没有替换源文件中的内容