是否可以从Fortran脚本调用shell命令?
我的问题是我分析非常大的文件。这些文件有很多行,例如84084002或类似的行。在开始分析之前,我需要知道文件有多少行,因此我通常使用shell命令:wc -l "filename"
,然后在脚本中使用这个数字作为一个变量的参数。
但我想从我的程序中调用这个命令,并使用行数将其存储到变量值中。
自1984年以来,实际上在2008标准中,但大多数常见的Fortran编译器(包括gfortran
)已经实现了它,有一个标准的内部子程序execute_command_line
,它的功能与广泛实现但非标准的子程序system
的功能大致相同。正如@MarkSetchell(几乎)所写的,你可以尝试
CALL execute_command_line('wc -l < file.txt > wc.txt' )
OPEN(unit=nn,file='wc.txt')
READ(nn,*) count
Fortran没有一种标准的方法来获取文件中的行数,而无需求助于上面那种依赖于操作系统的解决方法。其他,也就是说,比打开文件,计算行数,然后倒带到文件的开头开始读取。
您应该能够执行以下操作:
command='wc -l < file.txt > wc.txt'
CALL system(command)
OPEN(unit=nn,file='wc.txt')
READ(nn,*) count
您可以将行数输出到文件(fort.1)
wc -l file|awk '{print $1}' > fort.1
在Fortran程序中,您可以通过读取fort.1:文件,将行数存储到一个变量中(例如count)
read (1,*) count
然后你可以循环变量计数并读取整个文件
do 1,count
read (file,*)