0

我的程序正在将两个值并排写入文件-(作为两列)由于一些愚蠢的编程错误,我设法做到了以下几点

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 只是一个空文件。但它需要所有条目并将它们放入一列。任何人都可以帮助解决这些问题吗?有超过 2000000 个条目,所以我无法手动解决这个问题。

或者有什么方法可以获取这个新文件 new.dat 并获取每个第二个条目并将它们写入一个新列?

谢谢

4

1 回答 1

3

用这个awk表达式怎么样?

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

它将两行合二为一,其中NR表示记录数(在本例中为行)。请注意,$0*1用于删除第二行的尾随制表符。

测试

$ 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 回答