我一直在寻找一种方法来修改包含特定单词/字符但不包含其他单词/字符的多个文件中的多行。更具体地说,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 来修改它们。有人可以帮忙吗?
sed
表达式_将全部
REAL
替换REAL(kind=r8)
为REAL
后面没有紧跟着一个(
.::
在同一行的后面有一个地方。按照我的写法,该
REAL
字符串可能会出现在该行的任何位置。如果单词首先出现在行中(行首和单词之间没有空格或任何内容),则在表达式中使用^REAL
first 代替。REAL
读作:
输出