<Попередній | зміст | Наступна>
якоря
Каретка (^) і знак долара ($) символи розглядаються як якорі у регулярних виразах. Це означає, що вони викликають збіг, лише якщо регулярний вираз знайдено на початку рядка (^) або в кінці рядка ($):
[me@linuxbox ~]$ grep -h '^zip' dirlist*.txt
zip zipcloak zipgrep zipinfo zipnote zipsplit
[me@linuxbox ~]$ grep -h 'zip$' dirlist*.txt
gunzip gzip funzip gpg-zip preunzip prezip розпакуйте zip
[me@linuxbox ~]$ grep -h '^zip$' dirlist*.txt
ZIP
[me@linuxbox ~]$ grep -h '^zip' dirlist*.txt
zip zipcloak zipgrep zipinfo zipnote zipsplit
[me@linuxbox ~]$ grep -h 'zip$' dirlist*.txt
gunzip gzip funzip gpg-zip preunzip prezip розпакуйте zip
[me@linuxbox ~]$ grep -h '^zip$' dirlist*.txt
ZIP
Тут ми шукали у списку файлів рядок “zip”, розташовану на початку рядка, в кінці рядка та в рядку, де він знаходиться як на початку, так і в кінці рядка (тобто сам по собі на лінія). Зауважте, що регулярний вираз '^$' (початок і кінець без нічого між ними) буде відповідати порожнім рядкам.
Помічник з кросвордів
Навіть з нашими обмеженими знаннями про регулярні вирази на даний момент ми можемо зробити щось корисне.
Моя дружина любить розгадувати кросворди, і вона іноді звертається до мене за допомогою з певним питанням. Щось на кшталт: «Що таке слово з п’яти букв, третя буква якого — «j», а остання — «r», що означає...?» Таке запитання змусило мене задуматися.
Чи знаєте ви, що ваша система Linux містить словник? Це робить. Подивіться в /usr/share/dict каталог, і ви можете знайти один або кілька. Файли словника, розташовані там, є лише довгими списками слів, по одному на рядок, упорядкованими в алфавітному порядку. У моїй системі слова файл містить трохи більше 98,500 XNUMX
слова. Щоб знайти можливі відповіді на питання кросворду вище, ми можемо зробити це:
[me@linuxbox ~]$ grep -i '^..jr$' /usr/share/dict/words
Майор-майор
Використовуючи цей регулярний вираз, ми можемо знайти всі слова в нашому словниковому файлі, які складаються з п’яти літер і мають «j» на третій позиції та «r» в останній позиції.