每3个字符向后添加一个点

时间:2014-02-20 18:03:02

标签: bash shell sed awk

我有一个这样的文件:

32323
43434343
34343434
111134343434
.
.
.

希望我的文件看起来像这样:

32.323
43434.343
34343.434
111134343.434
.
.
.

如何向后每3个字符添加一个点? 我想过将每个角色分成1000?但无法找到并做出选择。

提前致谢。

3 个答案:

答案 0 :(得分:6)

使用sed;

sed 's/...$/.&/' file
32.323
43434.343
34343.434
111134343.434

使用awk:

awk '{printf "%.3f\n", ($1/1000)}' file
32.323
43434.343
34343.434
111134343.434

答案 1 :(得分:0)

您也可以sed使用awk正则表达式:

awk '{sub(/...$/,".&")}8' t
32.323
43434.343
34343.434
111134343.434

答案 2 :(得分:0)

或者您可以使用所谓的带括号的子表达式

$ sed -e "s/\(...$\)/.\1/" file
32.323
43434.343
34343.434
111134343.434