0

私のプログラムは、ファイルに2つの値を並べて書き込んでいました-(2つの列として)愚かなプログラミングの間違いにより、次のことができました

fprintf(network_energy_delta_E_BM, "%f\n\t %f\n", delta_network_energy_BM,
        network_energy_initial);

"%f\n\t %f\n"

私のデータが次のようになったことを意味します。

1234
     56
24
     99

などなど。これは私にいくつかの問題を引き起こし、私がしなければならないことです.ファイルを修正して並べて表示する方法はありますか? 私は試した

paste network_energy_delta_E_BM.dat foo.dat | awk '{ print $1 }' > new.dat

ここで、network_energy_delta_E_BM.dat は私のファイルで、foo.dat は空のファイルです。ただし、すべてのエントリを取得して、それらを 1 つの列に配置するだけです。誰でもこれらの修正を手伝ってもらえますか? 2000000 を超えるエントリがあるため、これを手動で修正することはできません。

または、この新しいファイル new.dat を取得して 1 つおきのエントリを取得し、それらを新しい列に書き込む方法はありますか?

ありがとうございました

4

1 に答える 1

3

awkこの表現を使ってみてはどうでしょうか。

awk '!(NR%2){print p,$0*1; next}{p=$0}' file

2 つの行を 1 つに結合します。ここでNR、レコードの数 (この場合は行) を意味します。$0*12 行目の末尾のタブを削除するために使用されることに注意してください。

テスト

$ cat a
1234
     56
24
     99
$ awk '!(NR%2){print p,$0*1; next}{p=$0}' a
1234 56
24 99
于 2013-08-15T10:25:36.393 に答える