用于从文件中删除重复行的Ant脚本

时间:2017-06-10 14:57:15

标签: ant

我一直试图在其他帖子中找到解决方案,但似乎没有人准确。 我很难找到从文件中删除重复行的方法。 从ex开始,文件RTNameList.txt的内容为

DBParticipant:JdbcDataSource:appdb
DBParticipant:JdbcDataSource:appdb
HttpType:HttpClientConfiguration:Prochttp
HttpType:HttpClientConfiguration:Prochttp

我只想将唯一的行写入另一个文件RTNameList-Final.txt .PLease建议使用Ant脚本的最佳解决方案。 我在下面使用它并不起作用。

<loadfile srcfile="${ScriptFilesPath}/RTNameList.txt" property="src.file.head">
  <filterchain>
    <sortfilter/>
    <uniqfilter/>
  </filterchain>
</loadfile>

<echo file="${ScriptFilesPath}/RTNameList-Final.txt">${src.file.head}</echo>

预期输出:文件RTNameList-Final.txt的内容应为

DBParticipant:JdbcDataSource:appdb
HttpType:HttpClientConfiguration:Prochttp

1 个答案:

答案 0 :(得分:-1)

Ant不是一种编程语言。以下示例使用嵌入式groovy脚本来处理文件。

实施例

├── build.xml
├── src
│   └── duplicates.txt
└── target
    └── duplicatesRemoved.txt

的src / duplicates.txt

DBParticipant:JdbcDataSource:appdb
DBParticipant:JdbcDataSource:appdb
HttpType:HttpClientConfiguration:Prochttp
HttpType:HttpClientConfiguration:Prochttp

目标/ duplicatesRemoved.txt

DBParticipant:JdbcDataSource:appdb
HttpType:HttpClientConfiguration:Prochttp

的build.xml

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

  <available classname="org.codehaus.groovy.ant.Groovy" property="groovy.installed"/> 

  <target name="build" depends="install-groovy">
    <taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy"/>
    <groovy>
      ant.mkdir(dir:"target")

      def dups = [:]

      new File("target/duplicatesRemoved.txt").withWriter { w ->
        new File("src/duplicates.txt").withReader { r ->
          r.readLines().each {
            if (!dups.containsKey(it)) {
              dups[it] = it
              w.println(it)
            }
          }
        }
      }
    </groovy>
  </target>

  <target name="install-groovy" unless="groovy.installed">
    <mkdir dir="${user.home}/.ant/lib"/>
    <get dest="${user.home}/.ant/lib/groovy.jar" src="http://search.maven.org/remotecontent?filepath=org/codehaus/groovy/groovy-all/2.3.6/groovy-all-2.3.6.jar"/>
    <fail message="Groovy has been installed. Run the build again"/>
  </target>

</project>