Ack Π»ΡƒΡ‡ΡˆΠ΅ grep

Π₯ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΉ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ для поиска, которая ΠΎΡ‡Π΅Π½ΡŒ сильно ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Тизнь. Когда я попадаю Π½Π° сСрвСр ΠΈ ΠΌΠ½Π΅ Π½Π°Π΄ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠΈΡΠΊΠ°Ρ‚ΡŒ я ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽ установлСн Π»ΠΈ ack. Π­Ρ‚Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° являСтся прСкрасной Π·Π°ΠΌΠ΅Π½ΠΎΠΉ grep, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠ΅Ρ€Π΅ find ΠΈ wc. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ grep? Ack ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ приятныС настройки ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ, Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎ-Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹Π΅ ΠΎΠΏΡ†ΠΈΠΈ, perl рСгулярки ΠΈ систСму ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠ². Если Π²Ρ‹ Π»ΡŽΠ±ΠΈΡ‚Π΅(приходится) ΠΈΡΠΊΠ°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», Ρ‚ΠΎ Π²Π°ΠΌ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ стоит Π΅Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ.

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ возмоТности

Ack ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ рСкурсивСн, Π° ΠΏΠΈΡΠ°Ρ‚ΡŒ мСньшС ΠΎΠΏΡ†ΠΈΠΉ всСгда Ρ…ΠΎΡ€ΠΎΡˆΠΎ.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π»Π°Π³ -w, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ экзСмпляр нашСго шаблона, ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ слов(ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами, слэшом ΠΈ Ρ‚.Π΄.).

ack -w mysql

Ack Π»ΡƒΡ‡ΡˆΠ΅ grep

Ack ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ поиск ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ Ρ„Π°ΠΉΠ»ΠΎΠ². НапримСр, Π½Π°ΠΉΠ΄Π΅ΠΌ Π²Π΅Ρ€ΡΠΈΡŽ модуля Π² json Ρ„Π°ΠΉΠ»Π°Ρ….

ack --json '"version":s+"d+.d+.d+"'

Ack Π»ΡƒΡ‡ΡˆΠ΅ grep

ΠŸΠΎΠ»Π½Ρ‹ΠΉ список ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

ack --help-types

Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π½Π°Π΄ΠΎ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ сколько Ρ€Π°Π· Ρ„Ρ€Π°Π·Π° встрСчаСтся Π² Π»ΠΎΠ³ Ρ„Π°ΠΉΠ»Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π» скрипт.

Ack Π»ΡƒΡ‡ΡˆΠ΅ grep
Π‘Ρ‡ΠΈΡ‚Π°Π΅ΠΌ сколько Ρ€Π°Π· process встрСчаСтся Π² Ρ„Π°ΠΉΠ»Π΅ test.log, Π½Π΅ учитывая рСгистр (-i).

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ вхоТдСния Π½Π΅ просто Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, Π° Π² Π³Ρ€ΡƒΠΏΠΏΠ΅. Π”ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ поиск слова mysql: посчитаСм ΠΊΠΎΠ»-Π²ΠΎ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ слов (-с) Π² *.js Ρ„Π°ΠΉΠ»Π°Ρ…(—js), ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΠ² Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ (-h) ΠΈ просуммировав ΠΈΡ‚ΠΎΠ³.

# Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ Π½Π° экран всС вхоТдСния
ack --js -w mysql
# считаСм ΠΎΠ±Ρ‰ΡƒΡŽ сумму Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ
ack --js -wch mysql

Ack Π»ΡƒΡ‡ΡˆΠ΅ grep

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚Ρ‹ΠΉ ΠΎΡ‚Ρ‡Π΅Ρ‚ ΠΏΠΎ ΠΊΠΎΠ»-Π²Ρƒ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ (-l)

ack --js -w -cl mysql

Ack Π»ΡƒΡ‡ΡˆΠ΅ grep

Если Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ контСкст для ΠΏΠΎΠΈcΠΊΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ack
ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ строки Π΄ΠΎ (-B) ΠΈ послС (-A) Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ выраТСния. Для этого Π½Π°Π΄ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ послС ΠΎΠΏΡ†ΠΈΠΈ ΠΊΠΎΠ»-Π²ΠΎ строк, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ.

# 2 строки Π΄ΠΎ 
ack --js --column -B 2 "query.once('" ./lib/

Ack Π»ΡƒΡ‡ΡˆΠ΅ grep

# 2 строки послС 
ack --js --column -A 2 "query.once('" . /lib/

Ack Π»ΡƒΡ‡ΡˆΠ΅ grep

А Ссли Π½ΡƒΠΆΠ½ΠΎ ΠΈ Ρ‚ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ (-Π‘)

ack --js --column -C 2 "query.once('" ./lib/

Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ опция(-v) для инвСртирования поиска, Ρ‚.Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ строки Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ шаблона.

РСгулярныС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

Ack Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ grep ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Perl совмСстимыС выраТСния.
Для мСня это большой плюс, Π½Π΅ приходится Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ синтаксис для рСгулярок.

ack 'vars+adds+'

Ack Π»ΡƒΡ‡ΡˆΠ΅ grep

Π‘ΠΎΠ»Π΅Π΅ слоТный ΠΏΡ€ΠΈΠΌΠ΅Ρ€

ack '*s+[vd+.d+.d+]'

Ack Π»ΡƒΡ‡ΡˆΠ΅ grep

Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ хочСтся Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ совпадаСт с шаблоном. Π—Π΄Π΅ΡΡŒ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ опция —output (-o)

ack -o '*s+[vd+.d+.d+]'

Ack Π»ΡƒΡ‡ΡˆΠ΅ grep

Ко всСму ΠΏΡ€ΠΎΡ‡Π΅ΠΌΡƒ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобок ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΉ Π² output Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ $[Π½ΠΎΠΌΠ΅Ρ€ Π³Ρ€ΡƒΠΏΠΏΡ‹]. НапримСр,

ack --output='version is $1' '*s+[v(d+.d+.d+)]'

Ack Π»ΡƒΡ‡ΡˆΠ΅ grep

Ack ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΎΠΏΡ†ΠΈΠΈ —range-start ΠΈ —range-end. Они ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚, ΠΊΠΎΠ³Π΄Π°
Π΄Π°Π½Π½Ρ‹Π΅ хранятся Π½Π΅ ΠΎΠ΄Π½ΠΎΠΉ строкой, Π° Π² многострочном Π²ΠΈΠ΄Π΅.

НапримСр, Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» с sql ΠΊΠΎΠ΄ΠΎΠΌ

Ack Π»ΡƒΡ‡ΡˆΠ΅ grep

Π˜Π·Π²Π»Π΅Ρ‡Π΅ΠΌ названия ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ. Началом Π±Π»ΠΎΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ строка Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π°ΡΡΡ Π½Π° SELECT, Π° ΠΊΠΎΠ½Ρ†ΠΎΠΌ строка Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π°ΡΡΡ Π½Π° FROM.

ack --range-start ^SELECT --range-end ^FROM 'td+.' ./test.sql

Ack Π»ΡƒΡ‡ΡˆΠ΅ grep

Если Π² поисковом Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ‚ΠΎΡ‡ΠΊΠ°, круглая скобка ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, Ρ‚ΠΎ для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… Π½Π΅ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ , ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ -Q.

# Поиск с экранированиСм 
ack --json 'mysql.'    
# Поиск Π±Π΅Π· экранирования
ack --json -Q mysql.

Ack Π»ΡƒΡ‡ΡˆΠ΅ grep

Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ

ack -f --js

Ack Π»ΡƒΡ‡ΡˆΠ΅ grep

Найти всС js Ρ„Π°ΠΉΠ»Ρ‹ имя ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… начинаСтся с P*, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΡ†ΠΈΡŽ(-g).

ack -g --js '/Pa.+.js$'

Ack Π»ΡƒΡ‡ΡˆΠ΅ grep

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° ΠΈΠΌΠ΅Π΅Ρ‚ свой ΠΊΠΎΠ½Ρ„ΠΈΠ³ Ρ„Π°ΠΉΠ». МоТно ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠ°ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ(~/.ackrc), Ρ‚Π°ΠΊ ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ (Π² ΠΏΠ°ΠΏΠΊΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» .ackrc).

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΎΠΏΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Ρ€ΡƒΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅. Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ нСсколько ΠΈΠ· Π½ΠΈΡ….

Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΏΠΊΡƒ ΠΏΡ€ΠΈ поискС

--ignore-dir=dist

Π”ΠΎΠ±Π°Π²ΠΈΠΌ кастомный Ρ‚ΠΈΠΏ Ρ„Π°ΠΉΠ»Π° —vue.

--type-add=vue:ext:js,vue

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ —vue, для поиска Π² Ρ„Π°ΠΉΠ»Π°Ρ… .vue. НапримСр: ack —vue App.
ΠŸΡ€ΠΈ этом ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ список Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ для этой ΠΎΠΏΡ†ΠΈΠΈ. НапримСр, Ρ‚ΡƒΡ‚ ΠΏΡ€ΠΈ использовании —vue Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ ΠΈ
.js Ρ„Π°ΠΉΠ»Ρ‹.

Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ *.min.js

--ignore-file=match:/.min.js$/

Установка

CentOS

yum update -y && yum install ack -y

Ubuntu

apt-get update -y && apt-get install ack-grep -y

Mac OS

brew update && brew install  ack

Установка с сайта

curl https://beyondgrep.com/ack-v3.3.1 > ~/bin/ack && chmod 0755 ~/bin/ack

ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹ для Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ²:

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π­Ρ‚ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всС возмоТности. ΠŸΠΎΠ»Π½Ρ‹ΠΉ список Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ²:

ack –-help
# ΠΈΠ»ΠΈ
ack --man

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° ack позволяСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ поиск Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈ Π³ΠΈΠ±Ρ‡Π΅. А с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pipeline (ack -C 10 hello | ack world) ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠ±Π°ΠΉΠ½ ΠΏΠΎ поиску ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС ΠΈ Π² самих Ρ„Π°ΠΉΠ»Π°Ρ….

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

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