Онлайн робочі станції OnWorks Linux та Windows

логотип

Безкоштовний онлайн-хостинг для робочих станцій

<Попередній | зміст | Наступна>

GREP

Основна програма, яку ми будемо використовувати для роботи з регулярними виразами, це наш старий приятель, GREP. Назва «grep» насправді походить від фрази «друк глобального регулярного виразу», тому ми бачимо це GREP має якесь відношення до регулярних виразів. По суті, GREP шукає в текстових файлах текст входження, що відповідає заданому регулярному виразу, і виводить будь-який рядок, що містить відповідність, до стандартного виводу.


Поки що ми користувалися GREP з фіксованими рядками, наприклад:


[me@linuxbox ~]$ ls /usr/bin | grep zip

[me@linuxbox ~]$ ls /usr/bin | grep zip


Це покаже список усіх файлів у файлі / usr / bin каталог, імена якого містять підрядок “zip”.

Команда GREP програма приймає параметри та аргументи таким чином:

grep [опції] regex [файл ...]

де regex є регулярним виразом.

Ось список часто використовуваних GREP опції:


Таблиця 19-1: Параметри grep


Опція Опис

Опція Опис

-i Ігнорувати регістр. Не розрізняйте символи верхнього та малого регістру. Також може бути вказано --ігнорувати регістр.


зображення

-v Інвертувати відповідність. зазвичай, GREP друкує рядки, які містять відповідність.

Цей варіант викликає GREP щоб надрукувати кожен рядок, який не містить збігу. Також може бути вказано --invert-match.


зображення

-c Надрукуйте кількість збігів (або невідповідностей, якщо -v також вказано параметр) замість самих рядків. Також може бути вказано --рахувати.


зображення

-l Надрукуйте назву кожного файлу, який містить відповідність, а не самі рядки. Також може бути вказано --файли-зі збігами.


зображення

-L Як і параметр -l, але друкуйте лише імена файлів, які не містять збігів. Також може бути вказано --files-without- match.


зображення

-n Поставте префікс до кожного відповідного рядка номером рядка у файлі. Також може бути вказаний --line-number.


зображення

-h Для пошуку в кількох файлах придушіть вихід імен файлів. Також може бути вказано --без імені файлу.


зображення


Для більш повного вивчення GREP, давайте створимо кілька текстових файлів для пошуку:

GREP


[me@linuxbox ~]$ ls /bin > dirlist-bin.txt [me@linuxbox ~]$ ls /usr/bin > dirlist-usr-bin.txt [me@linuxbox ~]$ ls /sbin > dirlist-sbin.txt [me@linuxbox ~]$ ls /usr/sbin > dirlist-usr-sbin.txt [me@linuxbox ~]$ ls dirlist*.txt

dirlist-bin.txt dirlist-sbin.txt dirlist-usr-sbin.txt dirlist-usr-bin.txt

[me@linuxbox ~]$ ls /bin > dirlist-bin.txt [me@linuxbox ~]$ ls /usr/bin > dirlist-usr-bin.txt [me@linuxbox ~]$ ls /sbin > dirlist-sbin.txt [me@linuxbox ~]$ ls /usr/sbin > dirlist-usr-sbin.txt [me@linuxbox ~]$ ls dirlist*.txt

dirlist-bin.txt dirlist-sbin.txt dirlist-usr-sbin.txt dirlist-usr-bin.txt


Ми можемо виконати простий пошук нашого списку файлів, як це:



[me@linuxbox ~]$ grep bzip dirlist*.txt

dirlist-bin.txt:bzip2 dirlist-bin.txt:bzip2recover

[me@linuxbox ~]$ grep bzip dirlist*.txt

dirlist-bin.txt:bzip2 dirlist-bin.txt:bzip2recover


У цьому прикладі GREP шукає рядок у всіх перерахованих файлах bzip і знаходить два збіги, обидва у файлі dirlist-bin.txt. Якби нас цікавив лише список файлів, які містять збіги, а не самі збіги, ми могли б вказати -l опції:



[me@linuxbox ~]$ grep -l bzip dirlist*.txt

dirlist-bin.txt

[me@linuxbox ~]$ grep -l bzip dirlist*.txt

dirlist-bin.txt


І навпаки, якби ми хотіли лише побачити список файлів, які не містять збігів, ми могли б зробити це:



[me@linuxbox ~]$ grep -L bzip dirlist*.txt

dirlist-sbin.txt dirlist-usr-bin.txt dirlist-usr-sbin.txt

[me@linuxbox ~]$ grep -L bzip dirlist*.txt

dirlist-sbin.txt dirlist-usr-bin.txt dirlist-usr-sbin.txt


Найпопулярніші хмарні обчислення ОС на OnWorks: