Подтвердить что ты не робот

Удалить строки, содержащие ключевое слово из файла

Я хотел бы удалить все строки из текстового файла, содержащего определенное ключевое слово.

До сих пор я только нашел:

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

но я не знаю, как удалить эти строки.

4b9b3361

Ответ 1

Вы использовали бы этот фильтр в filterchain в задаче, которая поддерживает элемент filterchain, то есть встроенные элементы Concat, Copy, LoadFile, LoadProperties, Перемещение задач.

Так, например, скопируйте или переместите файл, используя фильтр-цепочку, содержащую ваш фильтр 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>

Ответ 2

Вы можете выполнить внешнюю команду.

Я не тестировал, но в UNIX вы можете запустить что-то вроде этого:

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