我正在尝试为GNU / gfortran编译器调整CAMx软件(此开源仅由商业编译器支持)。
扩展Makefile后,我发现我必须用“!”替换第一列中的所有“c”和“C”字符。许多* .inc和* .f自由格式Fortran文件中的字符。
你能不能给我一些awk脚本,它会处理所有源文件(通过ls / .F,ls / .inc列出来)并制作了想要的“ C / C “ - >” 中“!他们内部的第一列更换?
你的,米罗
答案 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}