我有一堆使用非标准结构符号的Fortran 77文件(在这里描述):
STRUCTURE /item/
INTEGER id
CHARACTER(LEN=200) description
REAL price
END STRUCTURE
这显然是一些旧编译器使用的语法,但后来在Fortran 90中标准化为:
TYPE item
INTEGER id
CHARACTER(LEN=200) description
REAL price
END TYPE
我想做的是使用sed
或其他适当的工具来自动处理我的源文件,以找到旧语法的所有用途,并修补它们以使用更新的语法(即将"结构"的所有实例更改为"类型"并删除斜杠)。我确信我可以建立一些正则表达式集来做到这一点,但我在这方面还不够熟练,无法开始。
另一方面,与记录符号也有类似的不兼容性,也在链接中描述:
RECORD /item/ pear, store_catalog(100)
就变成:
TYPE(item) pear, store_catalog(100)
我认为类似的技术也可以用来修复这些实例。
我不太熟悉Fortran语法所以我不知道如何概括这个,但是你的例子可以用
来解决sed 's%^STRUCTURE /(.*)/$%TYPE 1%;
s%^END STRUCTURE$%END TYPE%'
注意使用%
分隔命令(s
, substitute)、pattern和replacement。通常您会使用/
,但这是要匹配的模式的一部分。
您的RECORD
问题确实应该有类似的解决方案。