Разбиране на командата 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
командата със сигурност ще спестява време, ако се използва за сканиране на големи набори от данни.