我一直试图在其他帖子中找到解决方案,但似乎没有人准确。 我很难找到从文件中删除重复行的方法。 从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
答案 0 :(得分:-1)
Ant不是一种编程语言。以下示例使用嵌入式groovy脚本来处理文件。
├── build.xml
├── src
│ └── duplicates.txt
└── target
└── duplicatesRemoved.txt
DBParticipant:JdbcDataSource:appdb
DBParticipant:JdbcDataSource:appdb
HttpType:HttpClientConfiguration:Prochttp
HttpType:HttpClientConfiguration:Prochttp
DBParticipant:JdbcDataSource:appdb
HttpType:HttpClientConfiguration:Prochttp
<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>