Bash文件批量替换

时间:2011-09-13 00:56:32

标签: bash

如果我正在编写一个bash脚本来对一堆文件进行现场编辑,那么我要改变的行就是:

#include <foo/bar.h>

#include "bar.h"

语法是什么?

old='#include <foo/bar.h>'
new='#include "bar.h'
perl -pe -i.bak 's/$old/$new/g' baz.h

2 个答案:

答案 0 :(得分:2)

如果所有文件都在同一目录中,则应该有效:

sed -e 's@#include <foo/bar.h>@#include "bar.h"@' -i *.c

答案 1 :(得分:1)

for file in *.c
do
  while read -r line
  do
      case "$line" in 
        *"$old"* ) line="${line/$old/$new}"
      esac
      echo "$line"
  done < "$file" > tempo && mv tempo "$file"  
done
相关问题