14

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

これまでのところ、私は見つけただけです:

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

しかし、これらの行を削除する方法がわかりません。

4

2 に答える 2

29

filterchain 要素をサポートするタスク、つまり組み込みの Concat、Copy、LoadFile、LoadProperties、Move タスクで、そのフィルターをfilterchainで使用します。

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

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

例:

<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
abc
assert
def
assert
ghi assert
jkl

後:

$ 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>
于 2012-06-15T11:35:14.213 に答える
0

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

テストはしていませんが、UNIX では次のように実行できます。

<exec executable="sed">
    <arg value="s/assert//" />
   <arg value="YOUR_FILE" />
</exec>
于 2012-06-15T11:34:24.920 に答える