使用ant删除文件的底线

Deleting the bottom line of a file using ant

我创建了 ant 目标,它应该删除文件的底行,然后将其回显到另一个名称的文件。我用于目标的代码是:

<loadfile srcfile="/dir/example/file.txt" property="last.line.removed">
        <filterchain>
            <filterreader classname="org.apache.tools.ant.filters.TailFilter">
                <param name="lines" value="-1"/>
                <param name="skip" value="1"/>
            </filterreader>
        </filterchain>
    </loadfile>
<echo message="${last.line.removed}" file="/dir/example/file2.txt" append="true"/>

我在构建中有 运行 这个目标,它只是回显原始文件而不是删除底线。

如果有人能告诉我为什么这不起作用或更好的方法,我们将不胜感激。

我无法重现问题...

例子

运行 代码产生预期结果(由 diff 命令演示):

$ ant
$ diff src/file.txt target/file.txt
2d1
< how are you?

项目文件

├── build.xml
├── src
│   └── file.txt
└── target
    └── file.txt

build.xml

<project name="demo" default="build">

  <target name="build">
    <mkdir dir="target"/>

    <loadfile srcfile="src/file.txt" property="last.line.removed">
      <filterchain>
        <filterreader classname="org.apache.tools.ant.filters.TailFilter">
          <param name="lines" value="-1"/>
          <param name="skip" value="1"/>
        </filterreader>
      </filterchain>
    </loadfile>

    <echo message="${last.line.removed}" file="target/file.txt" append="true"/>

  </target>

  <target name="clean">
    <delete dir="target"/>
  </target>

</project>

src/file.txt

hello world
how are you?

target/file.txt

hello world