更改文件

时间:2013-08-15 10:22:57

标签: c unix file-io awk

我的程序正在将两个值并排写入文件 - (作为两列)通过一些愚蠢的编程错误我已经设法完成以下操作

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并采取每一个条目并将其写入新列?

谢谢

1 个答案:

答案 0 :(得分: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