с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠΉ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ содСрТащиС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ тСкст

Как Π½Π°ΠΉΡ‚ΠΈ всС Ρ„Π°ΠΉΠ»Ρ‹, содСрТащиС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ тСкст (Π½Π° Linux)

Иногда Π±Ρ‹Π²Π°ΡŽΡ‚ ситуации, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всю Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму Linux ΠΈ Π½Π°ΠΉΡ‚ΠΈ всС Ρ„Π°ΠΉΠ»Ρ‹, содСрТащиС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ строку тСкста. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ поиск Π½Π΅ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°, Π° ΠΏΠΎ содСрТимому тСкстового Ρ„Π°ΠΉΠ»Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΈΡ… ситуаций ΠΈΠ· ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ β€” поиск Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Strict-Transport-Security Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π²Π΅Π±-сСрвСра:

с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠΉ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ содСрТащиС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ тСкст

Одним ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² поиска всСх Ρ„Π°ΠΉΠ»ΠΎΠ², содСрТащих Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ тСкст, являСтся ΠΊΠΎΠΌΠ°Π½Π΄Π°:

Π’ этой ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΈ:

-r (Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ -R) для рСкурсивного поиска β€” Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ поиск Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π² ΠΏΠ°ΠΏΠΊΠ΅ ΠΈ ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠ°Ρ…. ΠžΠΏΡ†ΠΈΡ -R Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° слСдуСт ΠΏΠΎ символичСским ссылкам, Ссли натыкаСтся Π½Π° Π½ΠΈΡ…, соотвСтствСнно, с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ -r этого Π½Π΅ происходит. Но поиск являСтся рСкурсивным Π² ΠΎΠ±ΠΎΠΈΡ… случаях

-n ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€Π° строку (Ρ‡Ρ‚ΠΎΠ±Ρ‹ быстрСС Π½Π°ΠΉΡ‚ΠΈ Π² Π½ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎΠ΅ мСсто)

-w ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для поиска ΠΏΠΎ ΠΏΠΎΠ»Π½Ρ‹ΠΌ словам. ΠŸΡ€ΠΈ использовании ΠΎΠΏΡ†ΠΈΠΈ -w Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π±Ρ€Π°Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат совпадСния Ρ†Π΅Π»Ρ‹Ρ… слов. Π’ΠΎ Π΅ΡΡ‚ΡŒ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ совпадСниС Π·Π°ΡΡ‡ΠΈΡ‚Π°Π»ΠΎΡΡŒ, совпавшая подстрока Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ Π²Π½Π°Ρ‡Π°Π»Π΅ строки, Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ΄Ρ‚ΠΈ нСсловСсный составной символ. Аналогично ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ Π² ΠΊΠΎΠ½Ρ†Π΅ строки, Π»ΠΈΠ±ΠΎ Π·Π° Π½Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ нСсловСсный составной символ. БловСсными составными символами ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±ΡƒΠΊΠ²Ρ‹, Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΈ ΠΏΠΎΠ΄Ρ‡Ρ‘Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅. БоотвСтствСнно, нСсловСсными ΡΠ²Π»ΡΡŽΡ‚ΡΡ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅: ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, Π·Π½Π°ΠΊΠΈ прСпинания, дСфисы ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅.

Π­Ρ‚ΠΈ ΠΎΠΏΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ, Π½ΠΎ, Π½Π° самом Π΄Π΅Π»Π΅, для поиска ΠΏΠΎ всСй Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ вмСстС с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ поддирСкториями, Π»ΠΈΠ±ΠΎ ΠΏΠΎ всСй Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, достаточно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ†ΠΈΡŽ -r, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ.

Рассмотрим Π΅Ρ‰Ρ‘ нСсколько ΠΎΠΏΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ вСсьма ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ:

-i для игнорирования рСгистра Π±ΡƒΠΊΠ² (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ищутся Π±ΡƒΠΊΠ²Ρ‹ Π² Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΌ ΠΆΠ΅ рСгистрС, ΠΊΠ°ΠΊ ΠΈ Π² шаблонС). Но ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ эта опция ΠΎΡ‡Π΅Π½ΡŒ сильно замСдляСт ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ поиска.

-l (малСнькая L) подавляСт Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄; вмСсто Π½Π΅Π³ΠΎ выводится имя ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ совпадСниС. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ совпавшая строка, Π° с этой ΠΎΠΏΡ†ΠΈΠ΅ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π°ΠΉΠ΄Π΅Π½Π° строка. Π‘ΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ остановлСно послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ совпадСния.

—color[=ΠšΠžΠ“Π”Π], —colour[=ΠšΠžΠ“Π”Π] β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для подсвСтки Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ совпавшСй подстроки, контСкстных строк, ΠΈΠΌΡ‘Π½ Ρ„Π°ΠΉΠ»ΠΎΠ², Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² строк, Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠ³ΠΎ смСщСния ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΉ (для ΠΏΠΎΠ»Π΅ΠΉ ΠΈ Π³Ρ€ΡƒΠΏΠΏ контСстных строк). ΠšΠžΠ“Π”Π ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎ ТоСланию. Π’ качСствС ΠšΠžΠ“Π”Π ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ never (Π½ΠΈΠΊΠΎΠ³Π΄Π°), always (всСгда) ΠΈΠ»ΠΈ auto (автоматичСски).

-I β€” ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹. ΠŸΡ€ΠΈ рСкурсивной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΏΠ°Π΄Π°Ρ‚ΡŒΡΡ Π½Π΅ тСкстовыС Ρ„Π°ΠΉΠ»Ρ‹, Π½Π°Ρ‚Ρ‹ΠΊΠ°ΡΡΡŒ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ grep Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ прСдупрСТдСния. Π­Ρ‚Π° опция Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ‚Π°ΠΊΠΎΠΉ, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΎΠ½ΠΈ Π½Π΅ содСрТали ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ….

Π’ качСствС шаблона grep ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ рСгулярныС выраТСния β€” ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ инструмСнтом для поиска строк. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ссли Π²Ρ‹ Π½Π΅ ΡƒΠΌΠ΅Π΅Ρ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ рСгулярными выраТСниями, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ Ρ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ символы Π² рСгулярных выраТСниях ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ рСкомСндуСтся ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с большой понятной инструкциСй «РСгулярныС выраТСния ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° grepΒ».

Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ -F. Она Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π¨ΠΠ‘Π›ΠžΠΠ« ΠΊΠ°ΠΊ фиксированныС строки, Π° Π½Π΅ ΠΊΠ°ΠΊ рСгулярныС выраТСния. Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, ΠΊΠΎΠΌΠ°Π½Π΄Π° grep потСряСт Ρ‡Π°ΡΡ‚ΡŒ своСй гибкости, Π½ΠΎ ΠΏΡ€ΠΈ этом Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π±ΠΎΠ»Π΅Π΅ прСдсказуСмый Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Ссли Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ рСгулярныС выраТСния.

Π’ зависимости ΠΎΡ‚ ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π², ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ эффСктивности поиска ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π»Π°Π³ΠΈ:

—exclude=GLOB β€” ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, с ΠΈΠΌΠ΅Π½Π΅ΠΌ суффикса, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ совпадёт с шаблоном GLOB. Имя суффикса это ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π½ΠΎΠ΅ имя, Ρ‚Π°ΠΊ ΠΈ любой суффикс, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉΡΡ послС / ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π΅-/ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ слэшСй Π² ΠΏΡƒΡ‚ΠΈ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°). ΠŸΡ€ΠΈ рСкурсивном поискС, ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ всС ΠΏΠΎΠ΄Ρ„Π°ΠΉΠ»Ρ‹, Ρ‡ΡŒΡ‘ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ имя совпадаСт с GLOB. Π‘Π°Π·ΠΎΠ²ΠΎΠ΅ имя β€” это Ρ‡Π°ΡΡ‚ΡŒ послС послСднСго слэша (/). Π¨Π°Π±Π»ΠΎΠ½ GLOB ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ нСсколько подстановочных символов. Π¨Π°Π±Π»ΠΎΠ½ (GLOB) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС подстановочных символов * (ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ нуля ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ символов), ? (ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ€ΠΎΠ²Π½ΠΎ ΠΎΠ΄ΠΈΠ½ символ), ΠΈ [Π‘Π˜ΠœΠ’ΠžΠ›Π«] (ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ любой ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π‘Π˜ΠœΠ’ΠžΠ›ΠžΠ’), (ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ любой ΠΈΠ· символов), Π° Ρ‚Π°ΠΊΠΆΠ΅ \ для экранирования подстановочных символов ΠΈΠ»ΠΈ символа ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ слэша, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π½Π°Ρ‡Π°Π»ΠΈ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ.

—include=GLOB β€” ΠΈΡΠΊΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„Π°ΠΉΠ»Ρ‹, Ρ‡ΡŒΡ‘ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ имя совпадаСт с GLOB (ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ подстановочныС символы, ΠΊΠ°ΠΊ описано Ρ‡ΡƒΡ‚ΡŒ Π²Ρ‹ΡˆΠ΅)

—exclude-dir=GLOB β€” ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ с суффиксом ΠΈΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ совпадаСт с шаблоном GLOB. ΠŸΡ€ΠΈ рСкурсивном поиски, пропуск Π»ΡŽΠ±Ρ‹Ρ… ΠΏΠΎΠ΄Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ, Ρ‡ΡŒΡ‘ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ имя совпадаСт с GLOB. Π›ΡŽΠ±Ρ‹Π΅ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ слэши Π² GLOB ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

Π’ этой ΠΊΠΎΠΌΠ°Π½Π΄Π΅ * (Π·Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΠ°) ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ любоС имя Ρ„Π°ΠΉΠ»Π°. Но эта Π·Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΠ° экранирована, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΠΎΠ½Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ особоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ этом ΠΈΠΌΠ΅Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠ΄Ρ‚ΠΈ Ρ‚ΠΎΡ‡ΠΊΠ° ΠΈ Π±ΡƒΠΊΠ²Π° c ΠΈΠ»ΠΈ h.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ поиск ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ ΠΈΠ· Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² всС Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ .o:

Для Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ(ΠΈΠΈ) Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ —exclude-dir. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ dirs dir1/, dir2/ ΠΈ всС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ *.dst/:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Команда Grep Π² Linux (Поиск тСкста Π² Ρ„Π°ΠΉΠ»Π°Ρ…)

Grep Command in Linux (Find Text in Files)

с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠΉ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ содСрТащиС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ тСкст

Команда grep ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ «глобальная ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉΒ», ΠΈ это ΠΎΠ΄Π½Π° ΠΈΠ· самых ΠΌΠΎΡ‰Π½Ρ‹Ρ… ΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ Π² Linux.

grep ΠΈΡ‰Π΅Ρ‚ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… строки, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ, ΠΈ записываСт ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ строку Π² стандартный Π²Ρ‹Π²ΠΎΠ΄. Если Ρ„Π°ΠΉΠ»Ρ‹ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Ρ‹, grep считываСт ΠΈΠ· стандартного Π²Π²ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ являСтся Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

grep Бинтаксис ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

Бинтаксис grep ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΊΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ», ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ.

Поиск строки Π² Ρ„Π°ΠΉΠ»Π°Ρ…

НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ всС строки, содСрТащиС строку bash ΠΈΠ· /etc/passwd Ρ„Π°ΠΉΠ»Π°, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Π’Ρ‹Π²ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

Если строка содСрТит ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Π΅ Π² ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ:

Π˜Π½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ) совпадСниС

НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ содСрТат строку, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ nologin Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅:

ИспользованиС Grep для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½Ρ‹ с grep ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сквозного Ρ‚Ρ€ΡƒΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄Π°, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ, Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Ρ‹ Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅.

НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ процСссы Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² вашСй систСмС ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, www-data Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ps ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ нСсколько ΠΊΠ°Π½Π°Π»ΠΎΠ² Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ. Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² Π²Ρ‹Π²ΠΎΠ΄Π΅ Π²Ρ‹ΡˆΠ΅, Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ строка, содСрТащая grep процСсс. Если Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ эта строка ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π»Π°ΡΡŒ, ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ Π²Ρ‹Π²ΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ grep экзСмпляру, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.

РСкурсивный поиск

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, ΠΊΠ°ΠΊ ΠΈΡΠΊΠ°Ρ‚ΡŒ строку baks.dev Π²ΠΎ всСх Ρ„Π°ΠΉΠ»Π°Ρ… Π² /etc ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅:

Π’Ρ‹Π²ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ строки с прСфиксом ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ:

ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя Ρ„Π°ΠΉΠ»Π°

Π’Ρ‹Π²ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

Поиск Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° рСгистра

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ учитываСтся grep рСгистр. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ прописныС ΠΈ строчныС символы Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Ρ€Π°Π·Π½Ρ‹Π΅.

НапримСр, ΠΏΡ€ΠΈ поискС Zebra Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΎΠΏΡ†ΠΈΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚.Π΅. Π΅ΡΡ‚ΡŒ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ строки:

Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ Β«Π—Π΅Π±Ρ€Π°Β» Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Β«Π—Π΅Π±Ρ€Π°Β», Β«ZEbrAΒ» ΠΈΠ»ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ прописных ΠΈ строчных Π±ΡƒΠΊΠ² для этой строки.

Поиск ΠΏΠΎΠ»Π½Ρ‹Ρ… слов

ΠŸΡ€ΠΈ поискС строки grep Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ всС строки, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… строка встроСна Π² Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ строки.

НапримСр, Ссли Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ Β«gnuΒ», всС строки, Π³Π΄Π΅ Β«gnuΒ» встроСн Π² Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ слова, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Β«cygnusΒ» ΠΈΠ»ΠΈ Β«magnumΒ», Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ:

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€Π° строк

НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ строки ΠΈΠ· /etc/services Ρ„Π°ΠΉΠ»Π°, содСрТащСго строку с bash прСфиксом с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ строки, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Π’Ρ‹Π²ΠΎΠ΄ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π°ΠΌ, Ρ‡Ρ‚ΠΎ совпадСния находятся Π² строках 10423 ΠΈ 10424.

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ совпадСний

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ подсчитываСм количСство ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ /usr/bin/zsh ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ.

Π‘ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования grep Π² Ρ‚ΠΈΡ…ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π² качСствС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ тСстирования Π² if инструкции :

ОсновноС рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

GNU Grep ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρ€ΠΈ Π½Π°Π±ΠΎΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ : Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ ΠΈ Perl-совмСстимый.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ grep шаблон интСрпрСтируСтся ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π³Π΄Π΅ всС символы, ΠΊΡ€ΠΎΠΌΠ΅ мСтасимволов, Π½Π° самом Π΄Π΅Π»Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ рСгулярными выраТСниями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ список Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… мСтасимволов:

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ^ символ (ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠ°), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ Π² Π½Π°Ρ‡Π°Π»Π΅ строки. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ строка kangaroo Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΎΠ½Π° встрСчаСтся Π² самом Π½Π°Ρ‡Π°Π»Π΅ строки.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ символа, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ \ символ (ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ слСш).

Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ рСгулярныС выраТСния

Π‘ΠΎΠΏΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠΈΡ‚Π΅ всС адрСса элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΈΠ· Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°:

Π‘ΠΎΠΏΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠΈΡ‚Π΅ всС Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ IP-адрСса ΠΈΠ· Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°:

-o ΠžΠΏΡ†ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ строку соотвСтствия.

Поиск ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строк

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ grep шаблон интСрпрСтируСтся ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ мСтасимволы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ | Ρ‚Π΅Ρ€ΡΡŽΡ‚ своС особоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΈ ΠΈΡ… вСрсии с ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ косой Ρ‡Π΅Ρ€Ρ‚ΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ строк ΠΏΠ΅Ρ€Π΅Π΄ сопоставлСниСм

НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΏΡΡ‚ΡŒ строк Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ контСкста ΠΏΠ΅Ρ€Π΅Π΄ сопоставлСниСм строк, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ строк послС сопоставлСния

НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΏΡΡ‚ΡŒ строк ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ контСкста послС сопоставлСния строк, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Π’Ρ‹Π²ΠΎΠ΄

Команда grep позволяСт ΠΈΡΠΊΠ°Ρ‚ΡŒ шаблон Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ². Если совпадСниС Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, grep ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ строки, содСрТащиС ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ шаблон.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Поиск тСкста Π² Ρ„Π°ΠΉΠ»Π°Ρ… Π½Π° LINUX

с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠΉ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ содСрТащиС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ тСкст

с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠΉ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ содСрТащиС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ тСкст

БСгодня Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ рассмотрим ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ поиск тСкста Π² Ρ„Π°ΠΉΠ»Π°Ρ… Π½Π° Linux.

Π’ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽ Ρ‚Π°ΠΊΠΈΠ΅ ситуации, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΉΡ‚ΠΈ тСкст Π² Ρ„Π°ΠΉΠ»Π΅ ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΊΠ°ΠΊΠΎΠΉ Π»ΠΈΠ±ΠΎ Ρ„Π°ΠΉΠ». Π’ Linux всё это дСлаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΠΎΠΉ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ grep. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π°Π½Π½ΠΎΠΉ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ тСкст Π² Ρ„Π°ΠΉΠ»Π°Ρ…, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π΅Π³ΠΎ Π΅Ρ‰Ρ‘.

grep (global regular expression print) β€” ΠΎΠ΄Π½Π° ΠΈΠ· самых вострСбованных ΠΊΠΎΠΌΠ°Π½Π΄ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ Linux, которая Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° GNU. Grep Π² считанныС сСкунды Π½Π°ΠΉΠ΄Ρ‘Ρ‚ Ρ„Π°ΠΉΠ», ΠΈΠ»ΠΈ тСкст Π² Ρ„Π°ΠΉΠ»Π΅, ΠΈΠ»ΠΈ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠ΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹.

ОПЦИИ

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим самыС основныС ΠΎΠΏΡ†ΠΈΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ grep, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ поиск тСкста Π² Ρ„Π°ΠΉΠ»Π°Ρ…:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² поиска тСкста Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ grep.

Поиск тСкста Π² Ρ„Π°ΠΉΠ»Π΅

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ smirnov Π² Ρ„Π°ΠΉΠ»Π΅ располоТСнных ΠΏΠΎ ΠΏΡƒΡ‚ΠΈ /home/passwd :

Данная ΠΊΠΎΠΌΠ°Π½Π΄Π° выдаст ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Из Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° grep ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»Π° Π² Ρ„Π°ΠΉΠ»Π΅ /etc/passwd ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ smirnov ΠΈ Π²Ρ‹Π²Π΅Π»Π° ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

Поиск тСкста Π² Ρ„Π°ΠΉΠ»Π°Ρ… ΠΈ дирСкториях.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π½Π°ΠΉΡ‚ΠΈ ΠΈΡΠΊΠΎΠΌΡƒΡŽ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ obu4alka.ru Π²ΠΎ всСх Ρ„Π°ΠΉΠ»Π°Ρ… располоТСнных Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ /etc/nginx ΠΈ Π΅Ρ‘ поддирСкториях. Для этого Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ рСкурсивным поиском, опция -r:

Π’ Π²Ρ‹Π²ΠΎΠ΄Π΅ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ:

Поиск тСкста Π² Ρ„Π°ΠΉΠ»Π°Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ слова.

Если Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ слово Π² Ρ„Π°ΠΉΠ»Π°Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ mytext, Ρ‚ΠΎ grep Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ 123mytext, mytext123, 12mytext34 ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎ содСрТимому Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Linux Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ искомыС слова, воспользовавшись ΠΎΠΏΡ†ΠΈΠ΅ΠΉ -w:

Поиск тСкста Π² Ρ„Π°ΠΉΠ»Π°Ρ… Π΄Π²ΡƒΡ… слов

МоТно ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎ содСрТимому Ρ„Π°ΠΉΠ»Π° Π½Π΅ ΠΎΠ΄Π½ΠΎ слово, Π° сразу Π΄Π²Π°:

Команда выдаст Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎ Π΄Π²ΡƒΠΌ запросам:

Π’Ρ‹Π²ΠΎΠ΄ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ grep Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя Ρ„Π°ΠΉΠ»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ слово с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ†ΠΈΠΈ -l. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ всС ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΏΡ€ΠΈ поискС ΠΏΠΎ содСрТимому ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹Π»ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ function :

Π¦Π²Π΅Ρ‚Π½ΠΎΠΉ Π²Ρ‹Π²ΠΎΠ΄ поиска Π² grep

Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ вхоТдСния Π² Π²Ρ‹Π²ΠΎΠ΄Π΅:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования grep

БСгодня ΠΌΡ‹ с Π²Π°ΠΌΠΈ рассмотрСли использованиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ grep для поиска ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС Linux. ΠŸΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ эта ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° станСт ΠΌΠΎΡ‰Π½Ρ‹ΠΌ инструмСнтом Π² Π²Π°ΡˆΠΈΡ… Ρ€ΡƒΠΊΠ°Ρ….

Если Π΅ΡΡ‚ΡŒ вопросы, Ρ‚ΠΎ пишСм Π² коммСнтариях.

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ Π² Π’Π΅Π»Π΅Π³Ρ€Π°ΠΌ ΠΊΠ°Π½Π°Π», Π’Πš ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° Twitter. Бсылки Π² шапки страницы.
Π—Π°Ρ€Π°Π½Π΅Π΅ всСм спасибо.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Поиск тСкста Π² Ρ„Π°ΠΉΠ»Π°Ρ… Linux

Иногда ΠΌΠΎΠΆΠ΅Ρ‚ понадобится Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ содСрТится опрСдСлённая строка ΠΈΠ»ΠΈ Π½Π°ΠΉΡ‚ΠΈ строку Π² Ρ„Π°ΠΉΠ»Π΅, Π³Π΄Π΅ Π΅ΡΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎΠ΅ слово. Π’ Linux всё это дСлаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΡ‡Π΅Π½ΡŒ простой, Π½ΠΎ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΌΠΎΡ‰Π½ΠΎΠΉ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ grep. Π‘ Π΅Ρ‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ строки Π² Ρ„Π°ΠΉΠ»Π°Ρ…, Π½ΠΎ ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π΅Π³ΠΎ Π΅Ρ‰Ρ‘.

Π’ этой инструкции ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ выполняСтся поиск тСкста Π² Ρ„Π°ΠΉΠ»Π°Ρ… Linux, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΎΠΏΡ†ΠΈΠΈ grep, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘ΠΌ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ с этой ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ grep?

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° grep Ρ€Π΅ΡˆΠ°Π΅Ρ‚ мноТСство Π·Π°Π΄Π°Ρ‡, Π² основном ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для поиска строк, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… строкС Π² тСкстС ΠΈΠ»ΠΈ содСрТимому Ρ„Π°ΠΉΠ»ΠΎΠ². Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ ΠΈΠ»ΠΈ рСгулярным выраТСниям. Команда Π² считанныС сСкунды Π½Π°ΠΉΠ΄Ρ‘Ρ‚ Ρ„Π°ΠΉΠ» с Π½ΡƒΠΆΠ½ΠΎΠΉ строчкой, тСкст Π² Ρ„Π°ΠΉΠ»Π΅ ΠΈΠ»ΠΈ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠ΅Ρ‚ ΠΈΠ· Π²Ρ‹Π²ΠΎΠ΄Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ°Ρ€Ρƒ Π½ΡƒΠΆΠ½Ρ‹Ρ… строк. А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим, ΠΊΠ°ΠΊ Π΅ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Бинтаксис grep

Бинтаксис ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

$ grep [ΠΎΠΏΡ†ΠΈΠΈ] шаблон [имя Ρ„Π°ΠΉΠ»Π°. ]

$ ΠΊΠΎΠΌΠ°Π½Π΄Π° | grep [ΠΎΠΏΡ†ΠΈΠΈ] шаблон

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ стандартный Π²Ρ‹Π²ΠΎΠ΄ пригодится,Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ошибки ΠΈΠ· Π»ΠΎΠ³ΠΎΠ² ΠΈΠ»ΠΈ Π½Π°ΠΉΡ‚ΠΈ PID процСсса Π² многочислСнном ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ps.

ΠžΠΏΡ†ΠΈΠΈ

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим самыС основныС ΠΎΠΏΡ†ΠΈΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π±ΠΎΠ»Π΅Π΅ эффСктивно Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ поиск тСкста Π² Ρ„Π°ΠΉΠ»Π°Ρ… grep:

ВсС самыС основныС ΠΎΠΏΡ†ΠΈΠΈ рассмотрСли ΠΈ Π΄Π°ΠΆΠ΅ большС, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ grep Linux.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования

Π‘ Ρ‚Π΅ΠΎΡ€ΠΈΠ΅ΠΉ ΠΏΠΎΠΊΠΎΠ½Ρ‡Π΅Π½ΠΎ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ ΠΊ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. Рассмотрим нСсколько основных ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² поиска Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Linux с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ grep, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π² повсСднСвной ΠΆΠΈΠ·Π½ΠΈ.

Поиск тСкста Π² Ρ„Π°ΠΉΠ»Π°Ρ…

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ User Π² Ρ„Π°ΠΉΠ»Π΅ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ Linux. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ поиск тСкста grep Π² Ρ„Π°ΠΉΠ»Π΅ /etc/passwd Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

grep User /etc/passwd

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ этого, Ссли, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, сущСствуСт Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ:

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ рСгистр Π²ΠΎ врСмя поиска. Π’ΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ ABC, abc ΠΈ Abc с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹:

ВывСсти нСсколько строк

НапримСр, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ всС ошибки ΠΈΠ· Π»ΠΎΠ³-Ρ„Π°ΠΉΠ»Π°, Π½ΠΎ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строчкС послС ошибки ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ полСзная информация, Ρ‚ΠΎΠ³Π΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ grep ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΠΌ нСсколько строк. Ошибки Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π² Xorg.log ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ «EE»:

Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚ строку с Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΠΈ 4 строчки послС Π½Π΅Ρ‘:

Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚ Ρ†Π΅Π»Π΅Π²ΡƒΡŽ строку ΠΈ 4 строчки Π΄ΠΎ Π½Π΅Ρ‘:

Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΏΠΎ Π΄Π²Π΅ строки с Π²Π΅Ρ€Ρ…Ρƒ ΠΈ снизу ΠΎΡ‚ вхоТдСния.

РСгулярныС выраТСния Π² grep

Поиск вхоТдСния Π² Π½Π°Ρ‡Π°Π»Π΅ строки с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ спСцсимвола «^», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ всС сообщСния Π·Π° Π½ΠΎΡΠ±Ρ€ΡŒ:

grep «^Nov 10» messages.1

Nov 10 01:12:55 gs123 ntpd[2241]: time reset +0.177479 s
Nov 10 01:17:17 gs123 ntpd[2241]: synchronized to LOCAL(0), stratum 10

grep «terminating.$» messages

Jul 12 17:01:09 cloneme kernel: Kernel log daemon terminating.
Oct 28 06:29:54 cloneme kernel: Kernel log daemon terminating.

Найдём всС строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат Ρ†ΠΈΡ„Ρ€Ρ‹:

grep «1» /var/log/Xorg.0.log

РСкурсивноС использованиС grep

Π’ Π²Ρ‹Π²ΠΎΠ΄Π΅ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅:

Π—Π΄Π΅ΡΡŒ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ строкой ΡƒΠΊΠ°Π·Π°Π½ΠΎ имя Ρ„Π°ΠΉΠ»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½Π° Π±Ρ‹Π»Π° Π½Π°ΠΉΠ΄Π΅Π½Π°. Π’Ρ‹Π²ΠΎΠ΄ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° Π»Π΅Π³ΠΊΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ†ΠΈΠΈ -h:

ServerName zendsite.localhost
DocumentRoot /var/www/localhost/htdocs/zendsite

Поиск слов в grep

Когда Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ строку abc, grep Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ kbabc, abc123, aafrabc32 ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎ содСрТимому Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Linux Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ искомыС слова с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ†ΠΈΠΈ -w:

Поиск Π΄Π²ΡƒΡ… слов

МоТно ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎ содСрТимому Ρ„Π°ΠΉΠ»Π° Π½Π΅ ΠΎΠ΄Π½ΠΎ слово, Π° Π΄Π²Π° сразу:

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ строки

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° grep ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ, сколько Ρ€Π°Π· опрСдСлённая строка Π±Ρ‹Π»Π° Π½Π°ΠΉΠ΄Π΅Π½Π° Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ опция -c (счСтчик):

C ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ†ΠΈΠΈ -n ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ строки, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π˜Π½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ поиск Π² grep

Команда grep Linux ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована для поиска строк Π² Ρ„Π°ΠΉΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ содСрТат ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ слово. НапримСр, вывСсти Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ содСрТат слово ΠΏΠ°Ρ€:

Π’Ρ‹Π²ΠΎΠ΄ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ grep Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя Ρ„Π°ΠΉΠ»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ слово с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ†ΠΈΠΈ -l. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ всС ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΏΡ€ΠΈ поискС ΠΏΠΎ содСрТимому ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹Π»ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ primary:

Π¦Π²Π΅Ρ‚Π½ΠΎΠΉ Π²Ρ‹Π²ΠΎΠ΄ Π² grep

Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ вхоТдСния Π² Π²Ρ‹Π²ΠΎΠ΄Π΅:

с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠΉ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ содСрТащиС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ тСкст

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

Π’ΠΎΡ‚ ΠΈ всё. ΠœΡ‹ рассмотрСли использованиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ grep для поиска ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС Linux. ΠŸΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ эта ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° станСт ΠΌΠΎΡ‰Π½Ρ‹ΠΌ инструмСнтом Π² Π²Π°ΡˆΠΈΡ… Ρ€ΡƒΠΊΠ°Ρ…. Если Ρƒ вас ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ вопросы, ΠΏΠΈΡˆΠΈΡ‚Π΅ Π² коммСнтариях!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π£Ρ€ΠΎΠΊ 9. Поиск Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ содСрТимому ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ grep ΠΈ locate

ΠžΡ‡Π΅Π½ΡŒ часто Π½Π°ΠΌ придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ поиск Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ тСкста Π² Ρ„Π°ΠΉΠ»Π°Ρ…. Для этого Π² Linux Π΅ΡΡ‚ΡŒ нСсколько достаточно ΠΌΠΎΡ‰Π½Ρ‹Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹.

Поиск ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°:

locate [ΠΎΠΏΡ†ΠΈΠΈ] имя_Ρ„Π°ΠΉΠ»Π°

ΠžΡ‡Π΅Π½ΡŒ быстрая ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° ΠΈ позволяСт ΠΈΡΠΊΠ°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Π² индСксируСмой Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь систСма заносит Π½ΠΎΠ²Ρ‹Π΅ названия Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ удаляСт ΡƒΠΆΠ΅ Π½Π΅Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ записи.

БистСма индСксируСт Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ всС Ρ„Π°ΠΉΠ»Ρ‹ Π»ΠΈΠ±ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅?

ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ всС Ρ„Π°ΠΉΠ»Ρ‹. Однако слСдуСт ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли Ρ„Π°ΠΉΠ» Π½ΠΎΠ²Ρ‹ΠΉ, Π° систСма Π΅Ρ‰Π΅ Π½Π΅ успСла Π΅Π³ΠΎ ΠΏΡ€ΠΎΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° locate Π΅Π³ΠΎ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ‚.

Π’ΠΎ Π΅ΡΡ‚ΡŒ придСтся ΠΆΠ΄Π°Ρ‚ΡŒ ΠΏΠΎΠΊΠ° ΠΎΠ½Π° это сдСлаСт?

ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. МоТно ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ updatedb.

А Π³Π΄Π΅ находится эта Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…?

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹, Π² ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ присутствуСт слово user. Для этого Π²Π²Π΅Π΄Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠΉ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ содСрТащиС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ тСкст

Π§Ρ‚ΠΎΠ±Ρ‹ имя Ρ„Π°ΠΉΠ»Π° Ρ‚ΠΎΡ‡Π½ΠΎ соотвСтствовало Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ поиска достаточно ввСсти:

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ рСгистр (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π·Π°Π³Π»Π°Π²Π½Ρ‹Π΅ ΠΈ прописныС Π±ΡƒΠΊΠ²Ρ‹ Π² ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°) достаточно ввСсти:

ПослС этого систСма ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² с Π·Π°Π³Π»Π°Π²Π½Ρ‹ΠΌΠΈ ΠΈ прописными Π±ΡƒΠΊΠ²Π°ΠΌΠΈ.

Поиск Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² тСкста Π² тСкстовых Ρ„Π°ΠΉΠ»Π°Ρ…

Π‘Ρ‹Π²Π°ΡŽΡ‚ ситуации, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π½Π΅ Π·Π½Π°Π΅ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°, Π½ΠΎ Π·Π½Π°Π΅ΠΌ Π΅Π³ΠΎ содСрТимоС. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½Π° функция поиска Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎ Π΅Π³ΠΎ содСрТимому ΠΈ Π² этом Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°:

grep [ΠΎΠΏΡ†ΠΈΠΈ] шаблон Ρ„Π°ΠΉΠ»

Для этого рассмотрим тСкстовый Ρ„Π°ΠΉΠ» Linux.txt ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π½Π°ΠΉΡ‚ΠΈ слово configuration Π² Π΅Π³ΠΎ тСкстС:

grep configuration Linux.txt

с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠΉ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ содСрТащиС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ тСкст

Команда Π²Ρ‹Π²Π΅Π»Π° сами строки, Π³Π΄Π΅ встрСчаСтся искомоС слово.

А Ссли тСкст содСрТит тысячи строк, Ρ‚ΠΎ ΠΊΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ эту строку Π² Ρ„Π°ΠΉΠ»Π΅?

Для этого Π΅ΡΡ‚ΡŒ опция -n ΠΈΠ»ΠΈ —line-number.

с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠΉ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ содСрТащиС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ тСкст

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π½ΠΎΠΌΠ΅Ρ€Π° строк с искомым тСкстом. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ тСкстовых Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΈΡΠΊΠΎΠΌΡƒΡŽ строку, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹Π΅ Π½ΠΎΠΌΠ΅Ρ€Π°.

А ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ поиск Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ… ΠΈΠ»ΠΈ ΠΏΠΎ всСй систСмС?

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ символов Π³Ρ€ΡƒΠΏΠΏΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ρƒ нас 4 Ρ„Π°ΠΉΠ»Π°, Π² ΠΈΠΌΠ΅Π½Π°Ρ… ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… присутствуСт слово manual:

с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠΉ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ содСрТащиС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ тСкст

с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠΉ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ содСрТащиС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ тСкст

Как Π²ΠΈΠ΄Π½ΠΎ сначала выводится Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°, Π·Π° Π½ΠΈΠΌ Π½ΠΎΠΌΠ΅Ρ€ строки ΠΈ Π·Π°Ρ‚Π΅ΠΌ сама строка с искомым словом.

Ну Π° Ссли Ρƒ ΠΈΠΌΠ΅Π½ этих Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π΅Ρ‚ ΠΎΠ±Ρ‰ΠΈΡ… слов, Ρ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ поиск?

Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ данная комбинация, Ρ‚ΠΎ grep ΠΈΡ‰Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅! Π’ΠΎ Π΅ΡΡ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡ‡Π΅ΡΡ‚ΡŒ ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ -R ΠΈΠ»ΠΈ —dereference-recursive.

Как ΠΌΡ‹ ΡƒΠΆΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ систСма ΡƒΠΆΠ΅ Π²Ρ‹Π΄Π΅Π»ΠΈΠ»Π° красным Ρ†Π²Π΅Ρ‚ΠΎΠΌ искомоС слово, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Однако Π½Π΅ всСгда систСма ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ выдСляСт Ρ†Π²Π΅Ρ‚ΠΎΠΌ искомоС слово. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Ρ‚Π°ΠΊΠΎΠΉ ситуации ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΏΡ†ΠΈΡŽ —color=auto. ВыглядСт это Ρ‚Π°ΠΊ:

Ну Π° Ссли Π²Π΄Ρ€ΡƒΠ³ понадобится Π·Π½Π°Ρ‚ΡŒ Π² ΠΊΠ°ΠΊΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ… находится искомый тСкст ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ большС, Ρ‚ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΎΠΏΡ†ΠΈΠ΅ΠΉ -l Π»ΠΈΠ±ΠΎ —files-with-matches:

с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠΉ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ содСрТащиС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ тСкст

с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠΉ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ содСрТащиС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ тСкст

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² примСнСния grep с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ прохоТдСния курса ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ довольно интСрСсныС ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ.

Для Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ доступны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΈ:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *