Я уже некоторое время самостоятельно изучаю сценарии оболочки и наткнулся на этот раздел руководства по основам Linux, касающийся grep и фигурных скобок {}. Моя проблема в том, что когда я запрашиваю шаблон строки для поиска с использованием grep от минимального до максимального количества вхождений с использованием {} или фигурных скобок, мой результат превышает указанный мной максимум.
Вот что произошло:
Express11:~/unix_training/reg_ex # cat reg_file2
ll
lol
lool
loool
loooose
Express11:~/unix_training/reg_ex # grep -E 'o{2,3}' reg_file2
lool
loool
loooose
Express11:~/unix_training/reg_ex #
Когда, согласно руководству, этого не должно быть, поскольку я указываю здесь, что я ищу только строки, содержащие от двух последовательных o до трех последовательных o.
РЕДАКТИРОВАТЬ: На самом деле, причина, по которой я не понял, как работают фигурные скобки, заключалась в этом упрощенном объяснении в руководстве. И цитирую:
19.4.10. между n и m раз И здесь мы требуем ровно от минимума 2 до максимума 3 раза.
paul@debian7:~$ cat list2 ll lol lool loool paul@debian7:~$ grep -E 'o{2,3}' list2 lool loool paul@debian7:~$ grep 'o\{2,3\}' list2 lool loool paul@debian7:~$ cat list2 | sed 's/o\{2,3\}/A/' ll lol lAl lAl paul@debian7:~$
Спасибо всем, кто ответил.
man 7 regex
), и в Интернете есть множество ресурсов по регулярным выражениям. Некоторые из них даже не так уж плохи. - person rici   schedule 11.02.2015o
. Таким образом, вы можете использовать:grep oo reg_file2 | grep -v oooo
. - person gniourf_gniourf   schedule 11.02.2015