我有一个Fortran 95的程序,在这种形式写一个数组文件:我想编辑我的FORTRAN生成FORTRAN
do temp = 1, temp_final
do MC = 1, N_MC
do x = 0, N
do y = 0, M
write(1,*) x, y, array(x,y)
enddo
enddo
enddo
write(1,*) T
T = T - temp*factor
enddo
在我的计划,我将这些值到一个文件,但之间两个温度值,我写了不止一次(但是N_MC次)x,y数组(x,y)值,因为它们在MC循环内,上升到N_MC步。由于文件只是生成的,并且程序需要很长时间才能运行,因此如果您可以使用任何技术来编辑已生成的文件并只保留第一组值并将其传送到另一个文件或编辑父文件,并保持变化。
我的文件看起来像这样
Temp 0.69999999999999998 !(initial value)
0 0 -1.0000000000000000
0 1 -1.0000000000000000
0 2 -1.0000000000000000
0 3 1.0000000000000000
0 4 1.0000000000000000
1 0 -1.0000000000000000
1 1 1.0000000000000000
1 2 1.0000000000000000
1 3 -1.0000000000000000
1 4 -1.0000000000000000
2 0 -1.0000000000000000
2 1 1.0000000000000000
2 2 -1.0000000000000000
2 3 1.0000000000000000
2 4 1.0000000000000000
3 0 -1.0000000000000000
3 1 -1.0000000000000000
3 2 1.0000000000000000
3 3 -1.0000000000000000
3 4 -1.0000000000000000
0 0 1.0000000000000000
0 1 -1.0000000000000000
0 2 1.0000000000000000
0 3 1.0000000000000000
0 4 -1.0000000000000000
1 0 1.0000000000000000
1 1 1.0000000000000000
1 2 1.0000000000000000
1 3 -1.0000000000000000
1 4 -1.0000000000000000
2 0 -1.0000000000000000
2 1 1.0000000000000000
2 2 -1.0000000000000000
2 3 1.0000000000000000
2 4 1.0000000000000000
3 0 -1.0000000000000000
3 1 -1.0000000000000000
3 2 1.0000000000000000
3 3 -1.0000000000000000
3 4 -1.0000000000000000
..........
N_MC-2 times (as two sets are already shown) !(after that there is new temp having new array values)
Temp 0.59999999999999998 ! like this, I am having array values for diff. temp
.
.
.
Temp 0.09999999999999998 !(final vaule)
我想保持第一组值不仅没有经过临时的连续值之间的.......... N_MC时间值。
我不知道如何调用一个文件,并删除特定的部分,我不想再保存它。
NB
欲仅传送第一组值0-3,0-9的,阵列(I,J)
0 0 -1.0000000000000000
0 1 -1.0000000000000000
0 2 -1.0000000000000000
0 3 1.0000000000000000
0 4 1.0000000000000000
1 0 -1.0000000000000000
1 1 1.0000000000000000
1 2 1.0000000000000000
1 3 -1.0000000000000000
1 4 -1.0000000000000000
2 0 -1.0000000000000000
2 1 1.0000000000000000
2 2 -1.0000000000000000
2 3 1.0000000000000000
2 4 1.0000000000000000
3 0 -1.0000000000000000
3 1 -1.0000000000000000
3 2 1.0000000000000000
3 3 -1.0000000000000000
3 4 -1.0000000000000000
! Not after that for Temp = 0.6999999999990
到单个温度的文件。
它不清楚你想要保留什么,但无论如何作为一个通用原则(不管语言)从文件中删除某些内容来重写整个文件,省略你想要删除的内容。对于这个例子,我怀疑你最好的办法是简单地在内存中保存你需要的内容,并且每次都重写整个文件。 – agentp 2014-11-04 13:28:12
@george文件非常大。 – 2014-11-04 13:38:00
如果你在一个类似Linux的平台上熟悉诸如'grep','split','cut'等实用工具,它们都可以用来获取文件中的位。如果你在类似Windows的平台上查找本地等价物。 – 2014-11-04 14:19:56