Понякога потребителите се сблъскват с необходимостта да търсят определена информация във всички файлове. Често конфигурационните документи или други обемни данни съдържат голям брой линии, така че е невъзможно ръчно да се намерят необходимите данни. Тогава една от вградените команди за операционни системи на Linux идва на помощ, което ще ви позволи да намерите линиите само за няколко секунди.
Съдържанието
Що се отнася до разликите между Linux дистрибуциите, в този случай те не играят никаква роля, тъй като командата grep, която ви интересува, е достъпна по подразбиране в повечето сборки и се използва по същия начин. Днес бихме искали да обсъдим не само ефекта на grep , но и основните аргументи, които могат значително да опростят процедурата за търсене.
Вижте също: Търсите файлове в Linux
Всички по-нататъшни действия ще се извършват чрез стандартна конзола, а също така ще ви позволява да отваряте файлове само чрез посочване на пълен път до тях или ако Терминалът се стартира от необходимата директория. Можете да откриете родителската папка на даден файл и да я прегледате в конзолата по следния начин:
cd /home/user/folder
, където потребителят е потребителското име и папката е името на папката. Използвайте cat + название файла
ако искате да видите цялото съдържание. Подробни указания как да работите с този екип можете да намерите в нашата друга статия на линка по-долу.
Още подробности: Примери за командите на Linux cat
Благодарение на горните стъпки, можете да използвате grep , като сте в правилната директория, без да указвате пълния път към файла.
Преди да пристъпим към разглеждане на всички налични аргументи, важно е да отбележим обичайното търсене по съдържание. Тя ще бъде полезна в тези моменти, когато трябва да намерите просто съвпадение по стойност и да покажете всички съответни редове.
grep word testfile
, където думата е информацията, която търсите и testfile е името на файла. Когато правите търсене извън папката, укажете пълния път като в /home/user/folder/filename
. След въвеждане на командата натиснете клавиша Enter . grep -i "word" testfile
. Понякога потребителите трябва да намерят не само точно съвпадение в редовете, но и да открият информацията, която идва след тях, например при докладване на конкретна грешка. Тогава правилното решение е да приложите атрибутите. Въведете grep -A3 "word" testfile
в конзолата, за да включите следните три реда в резултата след мача. Можете да напишете -A4
, след което ще бъдат уловени четири реда, няма ограничения.
Ако вместо -A
използвате аргумента -B + количество строк
, резултатът е данните, които са до точката на въвеждане.
Аргументът -С
, от своя страна, улавя линии около ключова дума.
По-долу можете да видите примери за задаване на посочените аргументи. Моля, обърнете внимание, че трябва да вземете предвид случая и да поставите двойни кавички.
grep -B3 "word" testfile
grep -C3 "word" testfile
Необходимостта да се дефинира ключова дума, която е в началото или в края на ред, най-често се среща по време на работа с конфигурационни файлове, където всеки ред е отговорен за един параметър. За да видите точния запис в началото, трябва да регистрирате grep "^word" testfile
. Знакът ^ отговаря само за използването на тази опция.
Търсенето на съдържание в края на реда става приблизително по същия начин, само в кавички трябва да добавите знака $ и командата ще изглежда така: grep "word$" testfile
.
При търсене на желаните стойности, потребителят не винаги има информация относно точната дума, присъстваща в низ. След това процедурата за търсене може да се извърши чрез номера, което понякога значително опростява задачата. Необходимо е само да използвате командата под формата на grep "[0-7]" testfile
, където "[0-7]" е диапазонът от стойности, а testfile е името на файла, който ще бъде сканиран.
Сканирането на всички обекти в същата папка се нарича рекурсивно. Потребителят трябва да приложи само един аргумент, който анализира всички файлове в папката и показва съответните линии и тяхното местоположение. Ще трябва да въведете grep -r "word" /home/user/folder
, където / home / user / folder е пътят към директорията за сканиране.
Синьото ще покаже мястото за съхранение на файла и ако искате да получите линии без тази информация, задайте друг аргумент, за да направите командата да получите този grep -h -r "word" + путь к папке
.
В началото на статията вече говорихме за обичайното търсене на думи. С този метод в резултатите ще бъдат показани допълнителни комбинации. Например, ще намерите думата Потребител , но командата също ще покаже Потребител 123 , Потребител Парола и други съвпадения, ако има такива. За да избегнете този резултат, задайте аргумента -w
( grep -w "word" + имя файла или его расположение
).
Тази опция се изпълнява и когато трябва да търсите по няколко точни ключови думи наведнъж. В този случай, напишете egrep -w 'word1|word2' testifile
. Моля, обърнете внимание, че в този случай буквата e се добавя към grep и се поставят единични кавички.
Обмислената програма може не само да намира думи във файлове, но и да показва линии, в които няма зададена от потребителя стойност. След това, преди да въведете стойността на ключа и файла, -v
добавя -v
. Благодарение на нея, когато активирате командата, ще видите само съответните данни.
Синтаксисът на grep събра още няколко аргумента, които могат да бъдат обяснени накратко:
-I
- показва само имената на файловете, които отговарят на критериите за търсене; -s
- деактивиране на известията за открити грешки; -n
- показва номера на реда във файла; -b
- показва номера на блока преди реда. Нищо не ви пречи да използвате множество аргументи за едно откритие, просто ги въведете разделени с интервал, без да забравяте да вземете предвид случая.
Днес напълно разглобихме командата grep , достъпна в Linux дистрибуциите. Той е един от стандартните и често използвани. Можете да прочетете за други популярни инструменти и техния синтаксис в нашия отделен материал на следния линк.
Вижте също: Често използвани команди в терминала на Linux