1

Я пытаюсь выяснить, как перечислить последовательные буквы в grep. Например, если бы я хотел перечислить все слова с двумя последовательными символами «И» или «И» или «И» в одной строке, как бы я это сделал?

Насколько я понимаю, команда будет выглядеть примерно так: egrep [a] {2} | egrep [i] {2} | egrep [u] {2}

Но что, если это тот случай, когда слово имеет aa и ii или любую другую комбинацию из трех букв по две?

2 ответа2

4

Что у вас есть в вашем вопросе, так это на самом деле три отдельные команды: он будет искать все, что имеет aa , затем передает эти результаты следующему egrep который ищет что-либо, имеющее ii , а затем передает эти результаты последнему egrep который ищет для uu Таким образом, вы получите только те строки, которые содержат все три комбинации aa , ii и uu .

Вам нужно будет использовать только одну команду egrep , используя регулярное выражение с чередованием:

egrep 'aa|ii|uu'

Это будет соответствовать всем строкам, которые содержат любые из aa , ii или uu .

1

Ты не можешь Regex работает только с регулярными выражениями. Вы заметите, что регулярные выражения не имеют какой-либо памяти (поэтому не могут сказать (. *)* 2 или что-то в этом роде). Вы ищете конечную атомоту или туринговую машину.

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