Я пытался создать регулярное выражение, которое будет использоваться в команде grep для соответствия строкам, которые не содержат слова. В приведенном ниже примере у меня есть слова uhu, uhuu, uhuuu, uhuuu по одному в каждой строке. Я использовал эхо, чтобы сделать это в одной команде. Результаты:Regex для соответствия строк, не содержащих слова
line1 = uh - end
line2 = uhu - end
line3 = uhuu - end
line4 = uhuuu - end
line5 = uhuuuu - end
Не обращайте внимания на номер строки и конечное слово. Итак, я хотел Grep uhuu с 2-х и 4-х повторений только, что линия 3 и 5. Я попробовал:
echo -e 'line1 = uh - end\nline2 = uhu - end\nline3 = uhuu - end\nline4 = uhuuu - end\nline5 = uhuuuu - end' | grep -E 'uh(u{2}|u{4})'
line3 = uhuu - end
line4 = uhuuu - end
line5 = uhuuuu - end
Он приносит линию 3 и 5, а также линии 4, потому что uhuuu имеет 2 U-х, плюс 3-й. Итак, мой вопрос, используя Regex, можно ли исключить эту четвертую строку, учитывая только слово «uhuuu»?
Я знаю, что смогу выполнить это с помощью трубы и grep -v в конце всего, но мне было интересно, можно ли это сделать с помощью RegEx.
Я проверил эту ссылку, но не смог найти способ заставить ее работать для моего дела. Спасибо https://stackoverflow.com/questions/406230/regular-expression-to-match-line-that-doesnt-contain-a-word#=
попытки задать расширенное -v "эм (и {2} | и {4})" – Devian
@Devian что страдает от тех же проблем : 'uhu {2}' совпадает с по крайней мере двумя завершающими 'u' и поэтому будет соответствовать более длинным элементам. – Ouroborus
Кажется, что это, моя ошибка – Devian