У меня есть список значений, возвращаемых мне, и все они заканчиваются на | как ниже:

testdata1-old |
testdata |
test2-old|

Я хочу удалить все строки, содержащие -old. Какое регулярное выражение я могу использовать?

2 ответа2

3

Я думаю, что вы неправильно понимаете регулярные выражения. По сути, они отвечают на вопрос "выглядит ли этот текст именно по этой схеме?«Есть много инструментов, которые используют регулярные выражения для манипулирования текстом, такие как sed или grep , и я думаю, что вы путаете их.

Что вам нужно сделать, это сформировать регулярное выражение, соответствующее тексту, который вы хотите отфильтровать. Например, искомое выражение - ^.*-old\|$ , и отфильтруйте строки, используя что-то вроде этого.

foreach line in input_file
    if regex.matches(line, "^.*-old\|$") then
        continue
    else
        print line
0

Что вам нужно

grep -v -E '^. * - старый \| $' входной_файл> выходной_файл

или что должно работать так же:

egrep -v '^. * - old\| $' input_file> output_file

Теперь сложная задача - найти версию grep или egrep для Windows, которая запускается из cmd.exe или Powershell.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .