在数字列中的每个元素上添加小数点

时间:2019-02-11 09:11:48

标签: unix

我有一个像这样的文件:

abc 123456 566671 487823 244211 911234 778234 671123 455321
fgd 1567988 2556118 4798739 1803812 9208018 4712324 2134981 1027431
etc..

我想在每个数字的右边添加一个小数点后3位数字。因此,如果我有123456,我应该得到123.456,如果我有1234567,我应该得到1234.567。

首先,我在每个6位数字的末尾添加零(我的文件具有至少6位数字的数字),并执行以下sed命令:

sed 's/.\{8\}/& /g' | sed 's/ \./ /g'

我的期望:

abc 123.456 566.671 487.823 244.211 911.234 778.234 671.123 455.321
fgd 1567.988 2556.118 4798.739 1803.812 9208.018 4712.324 2134.981 1027.431

我的实际情况:

abc 1234.560 5666.710 4878.230 2442.110 9112.340 7782.340 6711.230 4553.210
fgd 1567.988 2556.118 4798.739 1803.812 9208.018 4712.324 2134.981 1027.431


1 个答案:

答案 0 :(得分:0)

我的选择是在Vim中打开文件并对此进行搜索和替换:

:%s/\([0-9]\{3}\)\( \|$\)/.\1\2/gc

或通过sed方式执行:

$ sed 's/\([0-9]\{3\}\)\( \|$\)/.\1\2/g' input.txt