我有一個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