如何将属性文件值从其字符值更新为其等效的ASCII值

时间:2018-03-08 07:42:20

标签: bash

我有一个属性文件(names collect { case element => element("rawname") -> element("stdname")} toMap res1: scala.collection.immutable.Map[String,String] = Map(a -> A, b -> B, c -> C) ),内容如下。该值只有一个字母

test.properties

我想用ASCII值更新所有属性值。

key1=D
k1ey=A
key3=B

如何更新属性值,如上所示,并将其保存到bash脚本中的新文件(key1=068 k1ey=065 key3=066

2 个答案:

答案 0 :(得分:2)

使用此BashFAQ-071 How do I convert an ASCII character to its decimal (or hexadecimal) value and back?作为参考,您可以执行如下所示的巧妙小技巧,将ASCII字符转换为其十进制值。

#!/usr/bin/env bash

while IFS== read -r key value; do
    LC_CTYPE=C printf -v decimalValue %03d "'$value"
    printf '%s=%s\n' "$key" "$decimalValue"
done < test.properties > final.properties

我们的想法是使用'预先添加属性值,然后printf将其转换为与值等效的ASCII,然后使用格式说明符{打印出来} {1}}将其表示为十进制值。

答案 1 :(得分:0)

如果你可以使用perl,那就太简单了

perl -pe 's/=\K./ord$&/e' test.properties > final.properties