awk:替换" c"在Fortran代码中使用"!"

时间:2015-02-03 20:25:17

标签: string replace awk gfortran

我正在尝试为GNU / gfortran编译器调整CAMx软件(此开源仅由商业编译器支持)。

扩展Makefile后,我发现我必须用“!”替换第一列中的所有“c”和“C”字符。许多* .inc和* .f自由格式Fortran文件中的字符。

你能不能给我一些awk脚本,它会处理所有源文件(通过ls / .F,ls / .inc列出来)并制作了想要的“ C / C “ - >” 中“!他们内部的第一列更换?

你的,米罗

2 个答案:

答案 0 :(得分:2)

使用sed更容易:

 sed -i.bak 's/^[Cc]/!/' filename

然后对于目录中的所有.f.inl文件:

 find directory -type f \( -name \*.f -or -name \*.inl \) -exec sed -i.bak 's/^[Cc]/!/' '{}' \; -exec rm '{}.bak' \;

其中directory必须替换为源代码所在的目录。这也将处理子目录;如果不需要,也可以传递-maxdepth 1或使用

for file in *.f *.inl; do
  sed -i.bak 's/^[Cc]/!/' "$file" && rm "$file".bak
done

代替。

答案 1 :(得分:1)

我选择sed

sed -i 's/^[cC]/!/' *.f *.inc

如果你想进入子目录,你可以用bash:

来做
shopt -s globstar nullglob
sed -i 's/^[cC]/!/' **/*.{f,inc}