我有一个文件,它的前28行只是单词。从第29行到第100行,我有A、B和C原子的位置信息,以及它们的三维坐标。现在我想做的是改变第29-100行的Z(第4列)与Y(第3列)的关系:
Z=Z+sin(Y/10*Pi)。就在终点站有可能吗?谢谢。

A 0.016333 0.003203 0.472723
A 0.016333 0.035228 0.472723
B 0.016333 0.067253 0.472723
B 0.016333 0.099278 0.472723
C 0.016333 0.131303 0.472723
C 0.016333 0.163328 0.472723

最佳答案

Perl解决方案:

perl -lane '$F[3] += sin($F[2]/10 * 4 * atan2 1, 1) if 29 .. 100;
            print "@F"
           ' input_file > output_file

-n逐行读取输入
-a将空白上的每一行拆分为@F数组
-l将新行添加到print
4 * atan2 1, 1是π
29。。100仅适用于给定范围内的行

关于linux - 根据其前面的列修改文本列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37514800/

10-10 09:29