Как да използвате командата Grep в Linux

Разбиране на командата grep с практически примери за лесно филтриране и показване на съдържанието на файла

GREP означава „Глобален печат с регулярен израз“. Това е полезна помощна програма за команден ред, предоставена от Linux, за търсене на текстовия ред, който съответства на шаблона, предоставен от потребителя.

grep приема входа от потребителя под формата на низове или думи, които потребителят желае да търси в конкретен файл. След това командата проверява посочения от потребителя файл за този шаблон и след това връща редовете, които съответстват на предоставения шаблон.

Той върши отлична работа, като филтрира съдържанието на файл, като по този начин улеснява нашата задача да търсим конкретно съдържание в един или няколко файла едновременно.

В тази статия нека разгледаме функционирането на grep команда с някои практически примери в подробности.

Налични опции с grep команда

Това са някои от основните опции, които ще използвате често с grep команда.

ОпцияОписание
-iЗа търсене без значение на главни и малки букви
-rЗа рекурсивно търсене на всички файлове в посочената директория и нейните поддиректории
-° СЗа показване на общия брой показвания на низ
-vЗа показване на несъвпадащите линии
-wФилтър за тази конкретна дума, използвана отделно

Използвайки grep команда

grep командата обикновено се използва с тръбата (|) полезност. Може да се реализира с shell pipe, когато искате да го използвате с някои други Linux команди. Макар че, grep може да се използва и поотделно без тръбата (|) полезност.

Нека видим някои от основните синтаксиси на grep команда със и без помощната програма за тръба.

Нека първо ви покажа примерния текстов файл, който ще използвам, за да илюстрирам grep команда.

ИНДИЯ Е КРАСИВА СТРАНА НА МИРОЛЮЧИТЕЛНИ ХОРА. Индия стои на три стълба на законодателната, изпълнителната и съдебната власт. Индия е красива страна на хората, които обичат мира. Индия се грижи за хората, тъй като нейният ресурс декартови координати определя важността на всички декартови координати. Следват два празни реда. ползването на волска каруца е обичайна гледка в селото за земеделска работа. Това е краят на примерния файл.

grep използва се с тръба ( | )полезност

grep командата може да се реализира заедно с други команди на Linux с помощта на shell pipes. Като, използвайки котка команда за показване на съдържанието на файла, но в същото време извеждане на изхода с помощта на grep команда за показване само на съдържанието, което желаете да видите. Това ще стане по-ясно, когато преминем през примера.

Синтаксис:

[команда] | grep [низ]

Пример:

cat sample.txt | grep законодателен орган

Ето, използвах котка команда за показване на някои редове от файла „sample.txt“. Трябва да се показват само онези редове, които съдържат думата „законодателна власт“ и да се игнорират останалите редове.

Изход:

gaurav@ubuntu:~/workspace$ cat sample.txt | grep законодателна власт в Индия стои на три стълба на законодателната, изпълнителната и съдебната власт. gaurav@ubuntu:~/workspace$

grep използван без тръба ( | )полезност

grep може дори да се използва директно като отделна команда, без да се използва тръбата ( | ) полезност.

Синтаксис:

grep [string_to_be_searched] [име на файл]

Пример:

grep Индия sample.txt

Изход:

Индия е красива страна на хората, които обичат мира. Индия се грижи за хората като свой ресурс

По този начин съм използвал grep команда директно за филтриране на редовете, които съдържат низа „Индия“ от текстовия файл „sample.txt“.

Използване на търсене, независимо от главните букви grep команда

Linux е много предпазлив по отношение на чувствителността към малки и малки букви, когато задействаме командите на терминала. Това изисква от потребителя да внимава за случая на низа, поставен в командата.

Нека да видим това чрез пример.

grep peace sample.txt

В този случай няма да получим изход, тъй като в примерния файл не съществува дума като „мир“. Имаме думата „Мир“ с главно „П“. Думата е същата, но когато използваме grep команда без никаква опция, тя търси точното съвпадение във файла, без да се съобразява с промените в главния регистър на буквите.

За да избегнете тази неяснота, можете просто да използвате -i опция, която буквално казва на grep команда „забравете за случая, в който съм поставил низа, и просто потърсете всички съвпадащи модели във файла.“

Синтаксис:

grep -i [низ] [име на файл]

Пример:

grep -i peace sample.txt

Изход:

ИНДИЯ Е КРАСИВА СТРАНА НА МИРОЛЮЧИТЕЛНИ ХОРА. Индия е красива страна на хората, които обичат мира.

Всички съвпадащи редове се показват независимо от случая, в който се намира съвпадащият низ.

Рекурсивно търсене с помощта на grep команда

В -r опцията ще търси всички файлове в една директория и всички нейни поддиректории, които съответстват на модела на низ, предоставен от потребителя в командата.

Синтаксис:

grep -i -r [низ] [път на_файла]

Пример:

grep -i -r tomcat /home/gaurav/workspace

Низът тук е „tomcat“ и ще бъде търсен в работното пространство на директорията. Всички поддиректории и файлове в директорията „workspace“ също ще бъдат сканирани, за да съответстват на предоставения модел на низ.

Изход:

./context_log.policy:// catalina.policy - Разрешения на политиката за сигурност за Tomcat 7 ./context_log.policy:// Забележка: Ако tomcat-juli.jar е в ${catalina.base}, а не в ${catalina.home }, ./context_log.policy:// grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..} ./context_log.policy:grant codeBase "file:${catalina.home }/bin/tomcat-juli.jar" { ./context_log.policy: разрешение java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server"; ./context.xml: ./catalina.properties:# - Tomcat Bootstrap JAR-ове ./catalina.properties:# - Tomcat API JAR-ове ./catalina.properties:# - Tomcat JAR-ове ./catalina.properties:# - Често срещани, различни от Tomcat JAR ./catalina.properties:org.apache.catalina.startup.TldConfig.jarsToSkip=tomcat7-websocket.jar ./catalina.properties:tomcat.util.buf.StringCache.byte.enabled=true ./catalina:#.properties . tomcat.util.buf.StringCache.char.enabled=true ./catalina.properties:#tomcat.util.buf.StringCache.trainThreshold=500000 ./catalina.properties:#tomcat.util.buf.StringCache=5.cacheSize. /server.xml: pathname="conf/tomcat-users.xml" /> ./server.xml: 

ЗАБЕЛЕЖКА: Докато използвате -r опция с grep команда трябва да предоставим пътя на файла, а не името на файла

Търсене на цели думи само с grep команда

Много пъти случаят е, че ще търсите една дума, но в крайна сметка ще попълните терминала си със съвпадащи редове, които съдържат съвпадащата ви дума, но не като отделна дума. Може да видите редовете, които съдържат някои думи, чиято подчаст е низът, който сте въвели.

Объркани с това? Не се притеснявайте, много по-лесно е да разберете, след като получите примера.

Пример:

Тук искам да търся отделна дума „количка“ и да покажа всички редове, съответстващи на тази дума във файла „sample.txt“.

grep -i cart sample.txt

Изход:

Значението на декартовите координати на всички декартови координати. Използването на волска кола е често срещана гледка в селото за земеделска работа. Каруцата изчезна, тъй като момчето я остави свободно.

В изхода можете да забележите, че думата „декартово“ също съдържа думата „количка“ и следователно редовете, съдържащи думата „декартово“, също се показват, въпреки че не искаме да се показват.

Можете да използвате -w опция с grep команда за разрешаване на тази неяснота.

Синтаксис:

grep -i -w [низ] [име на файл]

Пример:

grep -i -w количка sample.txt

Изход:

ползването на волска каруца е обичайна гледка в селото за земеделска работа. Количката изчезна, тъй като момчето я остави свободно. 

Сега, когато сте използвали –w опция с grep ще получите само редовете, в които думата „количка“ се използва като цяло.

Обърнато търсене с помощта на grep команда

grep командата може да се използва и по обратен начин. Можем да използваме grep командвайте обратно, като скриете съвпадащите редове и показвате само редовете, където съвпадението не е намерено. Можете да направите това с помощта на -v опция с grep команда.

Синтаксис:

grep -i -v [низ] [име на файл]

Пример:

grep -i -v ресурс sample.txt

Изход:

ИНДИЯ Е КРАСИВА СТРАНА НА МИРОЛЮЧИТЕЛНИ ХОРА. Индия стои на три стълба на законодателната, изпълнителната и съдебната власт. Индия е красива страна на хората, които обичат мира. декартови координати значение на всички декартови координати. ползването на волска каруца е обичайна гледка в селото за земеделска работа. Това е краят на примерния файл.

В изхода се показват всички други редове, различни от реда, който съдържа думата „ресурс“.

Преброяване на поява на съвпадащ низ

Изходът на grep командата обикновено е много дълга, ако данните във файла са обширни. Колкото повече мачове, толкова по-дълги са изходите на grep команда. Linux ви предоставя опция, при която можете да покажете броя на срещата на съвпадението.

Синтаксис:

grep -i -c [низ] [име на файл]

Пример:

grep -i -c индия sample.txt

Изход:

gaurav@ubuntu:~/workspace$ grep -i -c Индия sample.txt 4 gaurav@ubuntu:~/workspace$

Тук изходът е число, което е броят на срещанията на думата „Индия“ във файла sample.txt.

ЗАБЕЛЕЖКА: Използвал съм -i опция във всеки пример, за да бъдете в безопасност с въпроса с чувствителността на малки и големи букви. В случай, че сте сигурни в регистра на думата, която търсите, можете спокойно да пропуснете -i опция.

Заключение

Научихме основните приложения на grep команда на Linux системите в този урок. Научихме се също да показваме различно съдържание, което най-добре отговаря на нашите изисквания, и да не претрупваме терминала с много редове. grep командата със сигурност ще спестява време, ако се използва за сканиране на големи набори от данни.

Категория: Linux