2012-06-15 13 views
12

特定のキーワードを含むテキストファイルからすべての行を削除したいと思います。キーワードを含む行をファイルから削除する

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

が、私はこれらの行を削除する方法がわからない:

これまでのところ私は発見しました。

答えて

25

あなたはフィルターチェーン要素をサポートしているタスクには、filterchainでそのフィルタを使用すると、内蔵された、連結方式、すなわち、 、コピー、LoadFile、LoadProperties、移動タスク。

たとえば、linecontainsフィルタを含むフィルタチェーンを使用してファイルをコピーまたは移動します。

linecontainsフィルタでnegateパラメータを使用して、その文字列を含む行を除外します。

例:後

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

::前

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

$ cat file.txt.edit 
abc 
def 
jkl 

ディレクトリに選択したファイルに適用するには、あなたのフォローアップの質問に答えるために:

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

ありがとう、もう1つ質問:私はこれをディレクトリ全体に適用し、特定のファイルタイプを調べるにはどうすればよいですか?例えば、私はこれをすべてのtxtファイルにしたいが、もちろんjpgファイルにはしたくない。 – clamp

+0

コピーに[fileset](http://ant.apache.org/manual/Types/fileset.html)を使用して、含めるファイルを指定します。 – sudocode

0

外部コマンドを実行できます。

私がテストしていませんが、UNIX上で、あなたがこのような何かを実行可能性があります

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

ありがとう、私は窓にいる:( – clamp

+0

窓でsedを使うことができます。http://www.cygwin.com/ – mihaisimi

+0

's/assert //'行全体ではなく 'assert 'という単語だけを削除しますか? – GKFX

関連する問題