想用 ant 在 macOS 上替换 txt 文件中的值。我使用了以下代码,但它给出了错误:“该类型不支持嵌套文本数据(”“)”。
<exec executable="sed">
<arg value="s/old/new/g" />
<arg value="$MY_FILE" />
</exec>.
如何替换变量的值,我在windows上用replace替换了一个文件,它可以工作。
也许有点晚了,但我刚刚发现了这个问题。希望我的解决方案至少可以帮助其他人。
缺少一个参数。命令行上的 sed 需要 -e "your expression" 或 -f "/path/to/your scriptfile"。在使用 ant 的情况下,您希望直接更改文件(sed 的语音中的“内部”),而不是不同的输入/输出文件。所以你需要添加 -i (或者更简单,将 -e 更改为 -ie)。因此,正确的调用将是:
<exec executable="sed">
<arg value="-ie" />
<arg value="s/old/new/g" />
<arg value="$MY_FILE" />
</exec>
也许这可以帮助
ant-contrib PropertyRegex
对输入字符串执行正则表达式操作,并将结果设置为属性
http://ant-contrib.sourceforge.net/tasks/tasks/propertyregex.html
在我的情况下,我不需要更改我的源文件,我需要将一些路径更改为我的 log4j.properties。所以这是我的解决方案
<exec executable="sed">
<arg value="s-/path/to/change/in/log4j_file-/new/path-g"/>
<arg line="./src/log4j.properties"/>
<redirector output="./output/path/conf/log4j.properties" ></redirector>
</exec>
就像这个命令:
sed 's-/path/to/change/in/log4j_file-/new/path/log-g' ./src/log4j.properties > ./output/path/conf/log4j.properties