如何在Fortran程序中添加shell命令并使用结果



是否可以从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,*) 

最新更新