2012-06-15 19 views

Odpowiedz

25

byłoby użyć tego filtru w filterchain, w zadaniu, które obsługuje elementu filterChain, czyli wbudowany w Concat , Copy, LoadFile, LoadProperties, Move tasks.

Na przykład, skopiuj lub przenieś plik przy użyciu łańcucha filtrów zawierającego filtr linecontains.

Użyj parametru negate w swoim filtrze linecontains, aby wykluczyć linie zawierające ten ciąg.

Przykład:

<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> 

Przed:

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

Po:

$ cat file.txt.edit 
abc 
def 
jkl 

Aby odpowiedzieć na to nawiązanie pytanie na zastosowaniu do wybranych plików w katalogu:

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

dzięki, jeszcze jedno pytanie: w jaki sposób mogę zastosować to do całego katalogu i sprawdzić niektóre typy plików? na przykład chcę to zrobić dla wszystkich plików txt, ale oczywiście nie dla plików jpg. – clamp

+0

Użyj [zestawu plików] (http://ant.apache.org/manual/Types/fileset.html) w kopii, aby określić pliki, które chcesz uwzględnić. – sudocode

0

Można wykonać polecenie zewnętrzne.

nie testowałem, ale w systemie UNIX można uruchomić coś takiego:

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

dziękuję, ale jestem w oknach :( – clamp

+0

Możesz użyć sed na windows http://www.cygwin.com/ – mihaisimi

+0

Czy nie 's/assert //' usuwa tylko słowo aser, a nie całą linię? – GKFX

Powiązane problemy