【问题标题】:Script to replace tokens with values mentioned in properties file用属性文件中提到的值替换标记的脚本
【发布时间】:2012-10-09 10:24:45
【问题描述】:

我有一个包含数据的文件 values.properties,例如:

$ABC=10
$XYZ=20

我想创建一个 shell 脚本,它将从上面的文件中一个一个地获取每个元素。

说 $ABC,然后转到文件 ABC.txt 并将 $ABC 的值替换为 10。 同样,然后转到文件 XYZ.txt 并将 $XYZ 替换为 20。

【问题讨论】:

    标签: linux shell


    【解决方案1】:

    我想也许这应该在Unix和Linux部分,我一起破解的解决方案如下:

    cat values.properties  | grep "=" | cut -d "$" -f2 | awk -F "=" '{print "s/$"$1"/"$2"/g "$1".txt"}' | xargs -n2 sed -i
    

    流程是这样的:

    1. 通过以下方式过滤掉所有赋值:grep "="
    2. 通过以下方式删除“$”:cut -d "$" -f2
    3. 使用awk拆分变量名和值,构造sed替换命令
    4. 使用 xargs 通过以下方式拉入替换参数和目标文件:xargs -n2
    5. 最后将 sed 作为命令传递给 xargs:xargs -n2 sed

    【讨论】:

    • 赞成,好技巧。这将适用于目标文件中具有命名约定$ABCD 的变量,但不适用于${ABCD}。请更新命令以涵盖这两种情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多