У меня есть список значений, возвращаемых мне, и все они заканчиваются на | как ниже:
testdata1-old |
testdata |
test2-old|
Я хочу удалить все строки, содержащие -old. Какое регулярное выражение я могу использовать?
У меня есть список значений, возвращаемых мне, и все они заканчиваются на | как ниже:
testdata1-old |
testdata |
test2-old|
Я хочу удалить все строки, содержащие -old. Какое регулярное выражение я могу использовать?
Я думаю, что вы неправильно понимаете регулярные выражения. По сути, они отвечают на вопрос "выглядит ли этот текст именно по этой схеме?«Есть много инструментов, которые используют регулярные выражения для манипулирования текстом, такие как sed
или grep
, и я думаю, что вы путаете их.
Что вам нужно сделать, это сформировать регулярное выражение, соответствующее тексту, который вы хотите отфильтровать. Например, искомое выражение - ^.*-old\|$
, и отфильтруйте строки, используя что-то вроде этого.
foreach line in input_file
if regex.matches(line, "^.*-old\|$") then
continue
else
print line
Что вам нужно
grep -v -E '^. * - старый \| $' входной_файл> выходной_файл
или что должно работать так же:
egrep -v '^. * - old\| $' input_file> output_file
Теперь сложная задача - найти версию grep
или egrep
для Windows, которая запускается из cmd.exe или Powershell.