Поиск двойного вхождения строки
Задание такое:
В файл data напишите выражение abbaxabaxabbax и напишите регулярное выражение для нахождения слова abbax таким образом, чтобы оно дважды совпадало в строке.
grep 'abbax{2}' data.txt не работает.
Ответы (1 шт):
Автор решения: Wiktor Stribiżew
→ Ссылка
Используйте
grep 'abbax.*abbax' data.txt
Шаблон abbax.*abbax найдёт совпадение в строчке, в которой есть минимум два совпадения abbax.
s='abbaxabaxabbax
abbax
abaxabbax
abbax ab a x abbax xxxxx'
grep 'abbax.*abbax' <<< "$s"
# => abbaxabaxabbax
# abbax ab a x abbax xxxxx
Если в сточке должно быть только два совпадения и не более, использйте
grep 'abbax.*abbax' data.txt | grep -v 'abbax.*abbax.*abbax'
Ещё один вариант с использованием регулярного выражения PCRE (для GNU grep):
grep -P '^(?!(.*abbax){3})(?:.*?abbax){2}'