使用vim,shell或python移动小数点

S.A*_*S.A 4 python vim shell

我有一个.pl文件,由非结构化标头和一些特定的XYZ结构组成.标题没有"." 在那里.您可以在下面找到此文件的片段:

Header (in total 29 lines)
ILINE
VRTX 1 545057.78564453125 3800905.201171875 -15000 
VRTX 2 545184.49072265625 3800765.451171875 -15000 
VRTX 3 545310.91650390625 3800625.970703125 -15000 
SEG 1 2 
SEG 2 3 
ILINE
VRTX 136 551295.84606933594 3799015.443359375 -15000 
VRTX 137 551293.82849121094 3798841.880859375 -15000 
VRTX 138 551290.57849121094 3798661.892578125 -15000  
SEG 136 137 
SEG 137 138 
Run Code Online (Sandbox Code Playgroud)

我想要实现的是将我的X和Y值的小数点移到左边,如下所示:

VRTX 1 5450.5778564453125 38009.05201171875 -15000 
VRTX 2 5451.8449072265625 38007.65451171875 -15000 
VRTX 3 5453.1091650390625 38006.25970703125 -15000
Run Code Online (Sandbox Code Playgroud)

我认为正则表达式可能有所帮助,但我没有使用Python和Shell的经验.任何帮助表示赞赏.

Fra*_*sco 5

复制和粘贴友好的vim解决方案

:g/VRTX/normal f.xhhP;xhhP
Run Code Online (Sandbox Code Playgroud)

说明:

  • :g/{pattern}/command - 对每个匹配模式的行执行命令.在这种情况下,每个VRTX线
  • normal - 我们要执行的命令是普通模式命令
  • F. - 找到当前行中的第一个点
  • xhhP - 剪切这样的角色,向左移动两次,粘贴
  • ; - 找到下一个出现
  • xhhP - 再次移动点

  • 这也是我想到的一个很好的解决方案,但它只有在同一行上永远不会有两个以上的数字时才有效.再看一遍之后,情况肯定是这样的,这使得你的答案比我给出的用例更好! (2认同)