特定の単語/文字は含まれ、他の単語/文字は含まれていない複数のファイルから複数行を変更する方法を探しています。具体的には、aはFortranファイルのすべての変数宣言をからに変換しようとしますreal
。real(kind=r8)
たとえば、次の行は次のようになります。
var= (var1*REAL(j)-var2*REAL(j)*var3)
REAL :: pwr10
INTRINSIC REAL
REAL(kind=r16) :: qr(n), qaorg, qx
REAL, DIMENSION(-1:nx, -1:ny) :: arg1
REAL(kind=r8) :: y3
次のようにする必要があります。
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
grepを使用して特定の行を選択する方法を知っていますが、sedを使用して変更する方法はありません。誰でも助けることができますか?
ベストアンサー1
$ sed 's/REAL\([^(].*::\)/REAL(kind=r8)\1/' 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
表現sed
方式
s/REAL\([^(].*::\)/REAL(kind=r8)\1/
すべてREAL
次へ交換REAL(kind=r8)
- 文字列は
REAL
すぐには続きません(
。 ::
同じ行に後で席があります。
私が書いた方法によると、文字列は行REAL
のどこにでも現れることがあります。単語が行の最初に表示される場合(行の先頭と単語の間にスペースや何もありません)、代替式の最初の^REAL
単語が使用されます。REAL