我有一个数据文件,我们称之为 fileA。它有两列,我想取第二列的差值,并将输出乘以 13.6,然后将其写在第三列中,并应写入顶部 Ediff(eV)。
文件A
36 -448.21483529
40 -448.23331592
44 -448.24002943
48 -448.24322255
50 -448.24407044
52 -448.24486713
.
.
.
.
所需输出
36 -448.21483529 Ediff(eV)
40 -448.23331592 -0.251337
44 -448.24002943 -0.0913037
48 -448.24322255 -0.0434264
50 -448.24407044 -0.0115313
52 -448.24486713 -0.010835
.
.
.
.
半工作解决方案
搜索后我发现this answer这能够解决我的问题,但我也需要放置单位。请帮我解决这个问题。
awk 'NR>1{$3=$2-p} {p=$2} 1' FileA
-------找到解决方案
awk 'NR>1{$3=($2-p)*13.6} {p=$2} 1' FileA
-------- 乘以 13.6
乘以13.6后的输出
36 -448.21483529
40 -448.23331592 -0.251337
44 -448.24002943 -0.0913037
48 -448.24322255 -0.0434264
50 -448.24407044 -0.0115313
52 -448.24486713 -0.010835
如何在 Ediff 值的顶部添加 Ediff(eV)?
最佳答案
您可以使用这个awk
:
awk '{print $0, (NR > 1 ? ($2-p)*13.6 : "Ediff(eV)"); p=$2}' fileA
36 -448.21483529 Ediff(eV)
40 -448.23331592 -0.251337
44 -448.24002943 -0.0913037
48 -448.24322255 -0.0434264
50 -448.24407044 -0.0115313
52 -448.24486713 -0.010835
关于bash - 使用 awk 获取第二列值之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71979226/