2012-06-15 25 views
12

Belirli bir anahtar sözcük içeren bir metin dosyasındaki tüm satırları kaldırmak istiyorum.Bir anahtar kelime içeren satırları silme

Bugüne kadar yalnızca bulundu:

<linecontains> 
    <contains value="assert"/> 
</linecontains> 

ama bu satırları nasıl kaldırılacağını bilmiyorum.

cevap

25

, CONCAT yerleşik yani , Kopyala, LoadFile, LoadProperties, Görevleri taşı. Örneğin, örneğin, satır içi filtrelerinizi içeren bir filtre zinciri kullanarak dosyayı kopyalayın veya taşıyın.

Bu dizeyi içeren satırları dışlamak için linecontains filtrenizde negate parametresini kullanın.

Örnek:

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

önce:

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

sonra:

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

$ cat file.txt.edit 
abc 
def 
jkl 

bir dizindeki seçilen dosyalara uygulayarak üzerinde takip soruya cevap vermek için

+0

teşekkürler, bir soru daha: Bunu tüm dizine nasıl uygulayabilirim ve belirli dosya türlerini nasıl kontrol edebilirim? örneğin tüm txt dosyalarına bunu yapmak istiyorum ama tabii ki jpg dosyalarını değil. – clamp

+0

Eklemek istediğiniz dosyaları belirtmek için kopyaya bir [fileset] (http://ant.apache.org/manual/Types/fileset.html) kullanın. – sudocode

0

Bir dış komut yürütebilirsiniz.

ben test etmedim ama UNIX üzerinde böyle bir şey çalışabilir: Sen FilterChain elemanını destekleyen bir görevi, bir filterchain bu filtre kullanacak

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

Teşekkürler, ama pencerede yaşıyorum :( – clamp

+0

Pencerelerde sed kullanabilirsiniz http://www.cygwin.com/ – mihaisimi

+0

// assert // ', sadece tüm kelime değil, assert kelimesini kaldırmaz mı? – GKFX

İlgili konular