От известно време се самообучавам по скриптиране на обвивка и попаднах на този раздел от ръководството за основите на 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
s. Така че можете да използвате:grep oo reg_file2 | grep -v oooo
. - person gniourf_gniourf   schedule 11.02.2015