2

想用 ant 在 macOS 上替换 txt 文件中的值。我使用了以下代码,但它给出了错误:“该类型不支持嵌套文本数据(”“)”。

<exec executable="sed">
   <arg value="s/old/new/g" />
   <arg value="$MY_FILE" />
 </exec>.

如何替换变量的值,我在windows上用replace替换了一个文件,它可以工作。

4

3 回答 3

5

也许有点晚了,但我刚刚发现了这个问题。希望我的解决方案至少可以帮助其他人。

缺少一个参数。命令行上的 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>
于 2015-06-17T11:34:23.123 回答
1

也许这可以帮助

ant-contrib PropertyRegex

对输入字符串执行正则表达式操作,并将结果设置为属性

http://ant-contrib.sourceforge.net/tasks/tasks/propertyregex.html

于 2012-08-17T09:00:25.127 回答
0

在我的情况下,我不需要更改我的源文件,我需要将一些路径更改为我的 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
于 2019-08-26T10:07:43.093 回答