私がやろうとしているのは、特定のパターンについて多数のソースファイルを検索し、このパターンの要塞に別の式を入れることです。私が探しているファイルはすべて同じ拡張子*.F90です。私の最初のステップは、grepを使用して、allocateを含むが割り当てられていないファイルのすべての行を見つけることです。したがって、次のようになります。
grep –I “ allocate *(” *.F90 | grep –v allocated
私が抱えている最初の問題は、角かっこの前に1つ以上のスペースがある可能性があることです。私は持てます
allocate(
or allocate (
or allocate (
これが、grepコマンドに「*」が必要な理由です。ただし、一般的なルール(スペースを除く)では、allocateの後に「(」が続き、割り当てられるものが続きます。したがって、次のようになります。
allocate ( array_name ( ....
スペースはオプションです。したがって、この文字列を見つけて、その前に次のように配置します。
If( allocated(array_name) ) deallocate(array_name)
そしてすぐに次の行で元の文字列が欲しいですallocate(array( … .
array_nameは英数字の文字列であり、置換後に複数の場所に表示されることに注意してください。これは、割り当てられているアレイの名前です。誰かが私にこれを行う方法のヒントを与えることができれば私は非常にありがたいです。私は立ち往生していて、それをどのように行うのか分かりません。