【问题标题】:Add a dot every 3 characters counting backwards每 3 个字符加一个点倒数
【发布时间】:2014-02-20 18:03:02
【问题描述】:

我有一个这样的文件:

32323
43434343
34343434
111134343434
.
.
.

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

32.323
43434.343
34343.434
111134343.434
.
.
.

如何向后每 3 个字符添加一个点? 我想也许将每个字符除以 1000?但找不到并选择这样做。

提前致谢。

【问题讨论】:

    标签: regex bash shell awk sed


    【解决方案1】:

    使用 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
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2018-07-14
          • 1970-01-01
          • 1970-01-01
          • 2015-05-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多