Как сопоставить только нечетные вхождения символа в конце строки, используя grep - PullRequest
3 голосов
/ 11 апреля 2011

Например, я сопоставляю странные вхождения 'a'.Таким образом, «helloaaa» должен совпадать, а «helloaaaa» не должен совпадать.

Я также пробовал «(aa) * a $» с и без опции -E на bash.

1 Ответ

4 голосов
/ 11 апреля 2011

Ваша проблема в том, что helloaaaa соответствует из-за последних трех a s:

helloaaaa
      ===

Чтобы избежать этого, вам нужно убедиться, что предыдущий символ не является a:

grep -E '[^a](aa)*a$' filename

Здесь я предполагаю, что линия не совсем a с.Если вся строка может быть a s, то вместо этого вы можете использовать это регулярное выражение:

grep -E '(^|[^a])(aa)*a$' filename
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...