2012-06-15 25 views

Respuesta

25

Se podría utilizar ese filtro en una filterchain, en una tarea que soporta el elemento de cadena de filtros, es decir, el built-in de concatenación , Copiar, LoadFile, LoadProperties, mover tareas.

Así que, por ejemplo, copie o mueva el archivo usando una cadena de filtro que contenga el filtro de línea.

Utilice el parámetro negate en su filtro linecontains para excluir las líneas que contienen esa cadena.

Ejemplo:

<project default="test"> 
    <target name="test"> 
     <copy tofile="file.txt.edit" file="file.txt"> 
      <filterchain> 
       <linecontains negate="true"> 
        <contains value="assert"/> 
       </linecontains> 
      </filterchain> 
     </copy> 
    </target> 
</project> 

Antes:

$ cat file.txt 
abc 
assert 
def 
assert 
ghi assert 
jkl 

Después:

$ cat file.txt.edit 
abc 
def 
jkl 

Para responder a su pregunta de seguimiento en la aplicación a los archivos seleccionados en un directorio:

<copy todir="dest"> 
    <fileset dir="src"> 
     <include name="**/*.txt"/> 
    </fileset> 
    <filterchain> 
     <linecontains negate="true"> 
      <contains value="assert"/> 
     </linecontains> 
    </filterchain> 
</copy> 
+0

gracias, una pregunta más: ¿cómo podría aplicar esto a un directorio completo y verificar ciertos tipos de archivos? por ejemplo, quiero hacer esto para todos los archivos txt, pero no para los archivos jpg, por supuesto. – clamp

+0

Utilice un [conjunto de archivos] (http://ant.apache.org/manual/Types/fileset.html) en la copia para especificar los archivos que desea incluir. – sudocode

0

Puede ejecutar un comando externo.

no he probado, pero en UNIX que puede encontrar algo como esto:

<exec executable="sed"> 
    <arg value="s/assert//" /> 
    <arg value="YOUR_FILE" /> 
</exec> 
+0

gracias, pero estoy en windows :( – clamp

+0

Puede usar sed en ventanas http://www.cygwin.com/ – mihaisimi

+0

¿No dice/'// solo elimina la palabra assert, no toda su línea? – GKFX

Cuestiones relacionadas