$ sed 's/REAL\([^(].*::\)/REAL(kind=r8)/' file
var= (var1*REAL(j)-var2*REAL(j)*var3)
REAL(kind=r8) :: pwr10
INTRINSIC REAL
REAL(kind=r16) :: qr(n), qaorg, qx
REAL(kind=r8), DIMENSION(-1:nx, -1:ny) :: arg1
REAL(kind=r8) :: y3
A expressão sed
s/REAL\([^(].*::\)/REAL(kind=r8)/
substituirá todos os REAL
por REAL(kind=r8)
, desde que
- A string
REAL
não é seguida imediatamente por(
. - Existe um
::
em algum lugar mais tarde na mesma linha.
Do jeito que eu escrevi, a string REAL
pode ocorrer em qualquer lugar na linha. Use ^REAL
no lugar do primeiro REAL
na expressão se a palavra tiver ocorrido primeiro na linha (sem espaços ou qualquer coisa entre o início da linha e a palavra).