$ 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
REALnã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).