上下文:我在給出結果文件的程序上運行計算。 在這些結果文件(擴展名.h5),我可以申請一個Python代碼(我不能改變這個Python代碼),使得它給了我一個方陣:用python替代bash(awk命令)
oneptdm.py resultfile.h5
給我,例如:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
points groups
1
2
3
...
在一個名爲oneptdm.dat的文件中
我想grep這個矩陣的對角線。通常我只使用bash:
awk '{ for (i=0; i<=NF; i++) if (NR >= 1 && NR == i) print i,$(i) }' oneptdm.dat > diagonal.dat
但是對於x原因,我必須現在就用python來做。我怎樣才能做到這一點 ? 我當然可以使用「subprocess」來再次使用awk,但是我想知道是否有另一種方法可以用2.6版本的python腳本來實現。 結果應該是:
(line) (diagonal element)
1 1
2 6
3 11
4 16
請注意,您稍微有一些混亂找awk腳本可以寫成'的awk '{打印NR,$ NR}' file' –
這是一個awk腳本,不是Bash腳本(儘管當然重定向必須由shell來處理)。 – tripleee
@tripleee當然,你是對的,但不要忘記'awk'可以獨立完成它。像'awk'{print「foo」> bar}'' – hek2mgl