Греп команден урок - Как да търсите файл в Linux и Unix с рекурсивно намиране

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

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

Как да използвам grep

Без grepда се подава каквато и да е опция, може да се използва за търсене на шаблон във файл или група файлове. Синтаксисът е:

grep ''  

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

Можете също да използвате заместващия знак (*), за да изберете всички файлове в директория.

Резултатът от това е появата на шаблона (до реда, който е намерен) във файла (ите). Ако няма съвпадение, изходът няма да бъде отпечатан на терминала.

Например, да кажем, че имаме следните файлове (наречени grep.txt):

Hello, how are you I am grep Nice to meet you 

Следващата grepкоманда ще търси всички случаи на думата „ти“:

grep you grep.txt 

Резултатът за това е:

Hello, how are you Nice to meet you 

you се очаква да има различен цвят от другия текст, за да идентифицира лесно търсеното.

Но grepидва с повече опции, които ни помагат да постигнем повече по време на операция за търсене. Нека разгледаме девет от тях, докато ги прилагаме към горния пример.

Опции, използвани с grep

1. -n(--line-number) - списък с номера на редове

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

grep you grep.txt -n 

Резултат:

1: Hello, how are you 3: Nice to meet you 

2. -c(--count) - отпечатва броя редове на съвпадения

grep you grep.txt -c 

Резултат:

2 

Имайте предвид, че ако имаше друг „вие“ на ред един, опцията -cпак щеше да отпечата 2. Това е така, защото се занимава с броя на редовете, където се появяват съвпаденията, а не с броя на съвпаденията.

3. -v(--invert-match) - отпечатва редовете, които не съответстват на посочения модел

grep you grep.txt -v -n 

Резултат:

2. I am grep 

Забележете, че ние също използвахме опция -n? Да, можете да приложите множество опции в една команда.

4. -i(--ignore-case) - използва се за нечувствителност към регистъра

# command 1 grep You grep.txt # command 2 grep YoU grep.txt -i 

Резултати:

# result 1 # no result # result 2 Hello, how are you Nice to meet you 

5. -l(--files-with-match) - отпечатва имена на файлове, които съответстват на шаблон

# command 1 grep you grep.txt -l # command 2 grep You grep.txt -i -l 

Резултати:

# result 1 grep.txt # result 2 # all files in the current directory that matches # the text 'You' case insensitively 
#### 6. `-w` (--word-regexp) - print matches of the whole word 

По подразбиране grepсъответства на низове, които съдържат посочения модел. Това означава, че grep yo grep.txtще се отпечатат същите резултати, както grep yo grep.txtзащото „yo“ може да се намери във вас. По подобен начин, „ou“.

С опцията -w, grepгарантира, че мачовете са абсолютно същия модел, както е посочено. Пример:

grep yo grep.txt -w 

Резултат:

Без резултат!

7. -o(--само съвпадение) - отпечатайте само съответстващия шаблон

По подразбиране grepотпечатва реда, където е намерен съответстващият шаблон. С опция -oсамо съответстващият шаблон се отпечатва ред по ред. Пример:

grep yo grep.txt -o 

Резултат:

yo 

8. -A(--after-context) и -B(--before-context) - отпечатайте редовете след и преди (съответно) съответстващия модел

grep grep grep.txt -A 1 -B 1 

Резултат:

Hello, how are you I am grep Nice to meet you 

Този съвпадащ модел е на ред 2. -A 1означава един ред след съответстващата линия и -B 1означава един ред преди съответстващата линия.

Има и -Cопция (--context), която е равна на -A+ -B. Стойността, предадена на, -Cще се използва за -Aи -B.

9. -R(--dereference-rekurzivno) - рекурсивно търсене

По подразбиране grepне може да търси директории. Ако се опитате да го направите, ще получите грешка („Е директория“). С опция -Rстава възможно търсене на файлове в директории и поддиректории. Пример:

grep you . 

Резултат:

# 'you' matches in a folders # and files starting from the # current directory 

Регулярни изрази за модели

grepсъщо така позволява основни регулярни изрази за определяне на модели. Две от тях са:

1. ^pattern- начало на ред

Този модел означава, че grepще съответства на низовете, чиито редове започват с низа, посочен след ^. Пример:

grep ^I grep.txt -n 

Резултат:

2: I 

2. pattern$- край на ред

За разлика от ^, $указва модели, които ще бъдат съчетани, ако линията завършва с низа преди $. Пример:

grep you$ grep.txt 

Резултат:

1: Hello, how are you 3: Nice to meet you 

Увийте

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

Към този инструмент са приложени още опции. Можете да намерите с man grep.