Ацк је бољи од греп-а

Желим да вам кажем о једном услужном програму за претрагу који увелико поједностављује живот. Када дођем до сервера и морам нешто да потражим, прво што урадим је да проверим да ли је ацк инсталиран. Овај услужни програм је одлична замена за греп, као и финд и вц у извесној мери. Зашто не греп? Ацк има лепша подешавања из кутије, више читљивих опција, перл регек и конфигурациони систем. Ако волите (морате) да претражујете кроз терминал, онда бисте то свакако требали испробати.

Основне карактеристике

Ацк је подразумевано рекурзиван, а писање мање опција је увек добра идеја.

Можемо користити заставу -wда кажемо услужном програму да тражи примерак нашег узорка окруженог границама речи (размак, косе црте, итд.).

ack -w mysql

Ацк је бољи од греп-а

Ацк подржава претрагу по типу датотеке. На пример, хајде да пронађемо верзију модула у јсон датотекама.

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

Ацк је бољи од греп-а

Комплетна листа подржаних типова датотека може се видети помоћу:

ack --help-types

Често морате да избројите колико пута се фраза појављује у датотеци евиденције, на пример, да бисте разумели колико података је скрипта обрађивала.

Ацк је бољи од греп-а
Рачунамо колико пута се процес дешава у датотеци тест.лог, не узимајући у обзир случај (-i).

Можемо да бројимо појављивања не само у једној одређеној датотеци, већ иу групи. Хајде да завршимо претходну претрагу речи мискл: пребројимо број појављивања речи (-Са) у *.јс фајловима (--јс), искључујући датотеке у којима ништа није пронађено (-h) и сумирање резултата.

# выведем на экран все вхождения
ack --js -w mysql
# считаем общую сумму вхождений
ack --js -wch mysql

Ацк је бољи од греп-а

Поред тога, можемо добити детаљан извештај о броју појављивања у свакој датотеци користећи (-l)

ack --js -w -cl mysql

Ацк је бољи од греп-а

Ако вам је потребан додатни контекст за претрагу, можете затражити потврду
прикажи линије до (-B) и после (-A) пронађеног израза. Да бисте то урадили, потребно је да након опције наведете број редова који треба да буду приказани.

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

Ацк је бољи од греп-а

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

Ацк је бољи од греп-а

А ако вам треба обоје, онда користите (-WITH)

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

Постоји и опција (-v) да бисте обрнули претрагу, односно приказали редове који не садрже дати образац.

Регуларни израз

Ацк, за разлику од греп-а, користи изразе компатибилне са Перл-ом.
За мене је ово велики плус; не морам да памтим засебну синтаксу за регуларне изразе.

ack 'vars+adds+'

Ацк је бољи од греп-а

Сложенији пример

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

Ацк је бољи од греп-а

Често желите да оставите у резултатима само оно што одговара шаблону. Опција --оутпут ће помоћи овде (-o)

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

Ацк је бољи од греп-а

Поред тога, помоћу заграда можемо изабрати пронађени део и приступити му у излазу преко променљиве $[гроуп нумбер]. На пример,

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

Ацк је бољи од греп-а

Ацк има корисне опције --ранге-старт и --ранге-енд. Помажу када
Подаци се чувају не у једном реду, већ у вишелинијском облику.

На пример, постоји датотека са скл кодом

Ацк је бољи од греп-а

Хајде да издвојимо имена колона. Почетак блока ће бити линија која почиње са СЕЛЕЦТ, а крај ће бити линија која почиње са ФРОМ.

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

Ацк је бољи од греп-а

Ако израз за претрагу садржи специјалне знакове као што су тачка, заграда и други, онда да их не бисте избегли помоћу , можете да користите опцију -Q.

# Поиск с экранированием 
ack --json 'mysql.'    
# Поиск без экранирования
ack --json -Q mysql.

Ацк је бољи од греп-а

Рад са датотекама

Добијте листу датотека са одређеним екстензијом

ack -f --js

Ацк је бољи од греп-а

Пронађите све јс датотеке чије име почиње са П* користећи опцију (-g).

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

Ацк је бољи од греп-а

Конфигурација

Услужни програм има сопствену конфигурациону датотеку. Можете имати и глобалну конфигурацију за корисника (~/.ацкрц) и локалну за одређену фасциклу (треба да креирате .ацкрц датотеку у фасцикли).

Већина опција које су написане у конфигурацијама могу се ручно специфицирати када се позову. Погледајмо неке од њих.

Занемари фасциклу при претраживању

--ignore-dir=dist

Хајде да додамо прилагођени тип датотеке -вуе.

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

Сада можете користити опцију --вуе за претраживање датотека .вуе. На пример: ацк --вуе Апп.
Можете одредити листу екстензија за ову опцију. На пример, овде, када користите -вуе, следеће ће бити обрађено:
.јс датотеке.

Занемари датотеке, на пример минимизирани *.мин.јс

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

Инсталација

Убунту

yum update -y && yum install ack -y

убунту

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

Мац ОС

brew update && brew install  ack

Инсталација са сајта

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

Додаци за уреднике:

Закључак

Ово нису све могућности. Комплетну листу функција можете погледати покретањем:

ack –-help
# или
ack --man

Ацк услужни програм вам омогућава да претраживање у терминалу учините практичнијим и флексибилнијим. И користећи цевовод (ацк -Ц 10 здраво | ацк ворлд) можете креирати моћну комбинацију за претраживање и филтрирање података у систему датотека и самим датотекама.

Извор: ввв.хабр.цом

Додај коментар