Bash 使用GNU工具替换属性文件中的属性

Bash 使用GNU工具替换属性文件中的属性,bash,makefile,gawk,Bash,Makefile,Gawk,是否有一种简单的方法可以在Makefiles中实现ant expandproperties功能?下面是一个示例: 考虑到这三个文件: 文件main.properties principal.name=John name=${principal.name} 文件1.1属性 principal.name=John name=${principal.name} 文件2.xml <properties name="${principal.name}"/> 我想用John替换文件

是否有一种简单的方法可以在Makefiles中实现ant expandproperties功能?下面是一个示例:

考虑到这三个文件:

文件main.properties

principal.name=John
name=${principal.name}
文件1.1属性

principal.name=John
name=${principal.name}
文件2.xml

<properties name="${principal.name}"/>


我想用John替换文件1.properties和2.xml中principal.name的所有外观,我应该使用GNU工具,因为我打算将它合并到Makefile中

是的,这是可行的。我在这里通过使用awk构建一个sed脚本来完成替换:

cat main.properties | awk -F= '{print "s/\\${" $1 "}/" $2 "/g"}' | sed -f - 1.properties

啊,太好了。作为记事本,我在main.properties中有路径,因此首先我必须将文件管道传输到sed,并用“\/”替换路径分隔符,这样它就不会影响最后一个sed,非常感谢!