Розуміння команди grep з практичними прикладами для легкої фільтрації та відображення вмісту файлу
GREP
розшифровується як «Глобальний друк регулярних виразів». Це корисна утиліта командного рядка, надана Linux, для пошуку текстового рядка, який відповідає шаблону, наданому користувачем.
grep
приймає вхідні дані від користувача у вигляді рядків або слів, які користувач бажає шукати в певному файлі. Потім команда перевіряє вказаний користувачем файл для цього шаблону, а потім повертає рядки, які відповідають наданому шаблону.
Він чудово справляється з роботою, фільтруючи вміст файлу, таким чином полегшуючи наше завдання шукати певний вміст в одному або кількох файлах одночасно.
У цій статті розглянемо функціонування grep
команду з деякими практичними прикладами в деталях.
Доступні варіанти з grep
команда
Це деякі з основних параметрів, які ви будете часто використовувати з grep
команда.
Варіант | Опис |
-я | Для пошуку без урахування регістру |
-r | Для рекурсивного пошуку всіх файлів у вказаному каталозі та його підкаталогах |
-c | Щоб відобразити загальну кількість показів рядка |
-v | Щоб відобразити невідповідні рядки |
-w | Фільтр для цього окремого слова |
Використання grep
команда
grep
команда зазвичай використовується з трубою (|
) корисність. Його можна реалізувати за допомогою каналу оболонки, якщо ви хочете використовувати його з деякими іншими командами Linux. хоча, grep
також можна використовувати окремо без труби (|
) корисність.
Давайте подивимося на деякі з основних синтаксисів grep
команда з і без утиліти pipe.
Дозвольте мені спочатку показати вам зразок текстового файлу, який я буду використовувати для ілюстрації grep
команда.
ІНДІЯ — КРАСИВА КРАЇНА МИРОЛЮБИХ ЛЮДЕЙ. Індія стоїть на трьох стовпах законодавчої, виконавчої та судової влади. Індія — прекрасна країна миролюбних людей. Індія піклується про людей, оскільки її ресурс узгоджує значення всіх декартових координат. Далі два порожні рядки. використання волячої вози – звична справа в селі для аграрних справ. Це кінець файлу зразка.
grep
використовується з трубою ( | )корисність
grep
Команда може бути реалізована разом з іншими командами Linux за допомогою каналів оболонки. Наприклад, використовуючи кіт
команду для відображення вмісту файлу, але водночас передачі виводу за допомогою grep
команду для відображення лише вмісту, який ви бажаєте побачити. Це стане більш зрозумілим, коли ми розглянемо приклад.
Синтаксис:
[команда] | grep [рядок]
Приклад:
cat sample.txt | grep законодавчий орган
Тут я використав кіт
команду для відображення деяких рядків із файлу «sample.txt». Відображаються лише ті рядки, які містять слово «законодавчий орган», а інші рядки ігноруються.
Вихід:
gaurav@ubuntu:~/workspace$ cat sample.txt | grep legislature india стоїть на трьох стовпах законодавчої, виконавчої та судової влади. gaurav@ubuntu:~/workspace$
grep
використовується без труби ( | )корисність
grep
можна навіть використовувати безпосередньо як окрему команду без використання каналу ( |
) корисність.
Синтаксис:
grep [string_to_be_searched] [ім'я файлу]
Приклад:
grep India sample.txt
Вихід:
Індія — прекрасна країна миролюбних людей. Індія піклується про людей як про свій ресурс
Таким чином, я використовував grep
команду безпосередньо для фільтрації рядків, які містять рядок «India» з текстового файлу «sample.txt».
Використання пошуку без урахування регістру grep
команда
Linux дуже обережно ставиться до чутливості до регістру, коли ми запускаємо команди на терміналі. Це вимагає від користувача уважного ставлення до регістру рядка, введеного в команду.
Давайте подивимося на це на прикладі.
grep peace sample.txt
У цьому випадку ми не отримаємо результат, оскільки у файлі зразка немає слова «мир». У нас є слово «Мир» з великої букви «П». Слово те саме, але коли ми використовуємо grep
без будь-яких параметрів, він шукає точну відповідність у файлі, не враховуючи будь-яких змін у регістрі літер.
Щоб уникнути цієї двозначності, ви можете просто використовувати -я
варіант, який буквально говорить grep
команда «Забудьте про те, що я вставив рядок, і просто знайдіть усі відповідні шаблони у файлі».
Синтаксис:
grep -i [рядок] [ім'я файлу]
Приклад:
grep -i мир sample.txt
Вихід:
ІНДІЯ — КРАСИВА КРАЇНА МИРОЛЮБИХ ЛЮДЕЙ. Індія — прекрасна країна миролюбних людей.
Усі відповідні рядки відображаються незалежно від випадку, в якому знаходиться відповідний рядок.
Рекурсивний пошук за допомогою grep
команда
The -r
Опція шукає всі файли в каталозі та всіх його підкаталогах, які відповідають шаблону рядка, наданому користувачем у команді.
Синтаксис:
grep -i -r [рядок] [шлях до файлу]
Приклад:
grep -i -r tomcat /home/gaurav/workspace
Рядок тут — «tomcat», і він буде шукатися в робочій області каталогу. Усі підкаталоги та файли в каталозі «робочої області» також будуть скановані на відповідність наданому шаблону рядка.
Вихід:
./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:# – JAR-файли Tomcat Bootstrap ./catalina.properties:# – JAR-файли Tomcat API ./catalina.properties:# – JAR-файли Tomcat ./catalina.properties:# – звичайні файли JAR, які не належать до 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.cache0Size. /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 india sample.txt 4 gaurav@ubuntu:~/workspace$
Тут результатом є число, яке є кількістю зустрічей слова «Індія» у файлі sample.txt.
ПРИМІТКА: Я використовував -я
опція в кожному прикладі, щоб бути в безпеці з проблемою чутливості до регістру. Якщо ви впевнені в регістрі слова, яке шукаєте, ви можете сміливо опускати його -я
варіант.
Висновок
Ми дізналися про основні способи використання grep
команду в системах Linux у цьому підручнику. Ми також навчилися відображати різноманітний контент, який найкраще відповідає нашим вимогам, і не завантажувати термінал купою ліній. grep
Команда, безсумнівно, заощадить час, якщо використовувати її для сканування великих наборів даних.