Символ *

10.8.3 Символ звездочки *

Символ звездочки *используется для сопоставления нуля или более вхождений предшествующего ему символа или шаблона. Например, e*будет соответствовать ноль или более вхождений буквы e:

sysadmin@localhost:~/Documents$ cat red.txt
red
reef
rot
reeed
rd
rod
roof
reed
root
reel
read
sysadmin@localhost:~/Documents$ grep 're*d' red.txt
red
reeed
rd
reed

Также можно сопоставить ноль или более вхождений списка символов, используя квадратные скобки. Шаблон [oe]*, используемый в следующем примере, соответствует нулю или более вхождений символа oили eсимвола:

sysadmin@localhost:~/Documents$ grep 'r[oe]*d' red.txt
red
reeed
rd
rod
reed

При использовании только с одним другим персонажем *не очень полезно. Любой из следующих шаблонов будет соответствовать каждой строке или строке в файле: '.*' 'e*' 'b*' 'z*'потому что символ звездочки *не может соответствовать нулю вхождений шаблона.

sysadmin@localhost:~/Documents$ grep 'z*' red.txt
red
reef
rot
reeed
rd
rod
roof
reed
root
reel
read
sysadmin@localhost:~/Documents$ grep 'e*' red.txt
red
reef
rot
reeed
rd
rod
roof
reed
root
reel
read

Чтобы сделать символ звездочки полезным, необходимо создать шаблон, который включает в себя не только один символ, предшествующий ему. Например, приведенные выше результаты можно улучшить, добавив еще один, eчтобы шаблон ee*эффективно соответствовал каждой строке, содержащей хотя бы один e.

sysadmin@localhost:~/Documents$ grep 'ee*' red.txt
red
reef
reeed
reed
reel
read

Last updated