Желим да вам кажем о једном услужном програму за претрагу који увелико поједностављује живот. Када дођем до сервера и морам нешто да потражим, прво што урадим је да проверим да ли је ацк инсталиран. Овај услужни програм је одлична замена за греп, као и финд и вц у извесној мери. Зашто не греп? Ацк има лепша подешавања из кутије, више читљивих опција, перл регек и конфигурациони систем. Ако волите (морате) да претражујете кроз терминал, онда бисте то свакако требали испробати.
Основне карактеристике
Ацк је подразумевано рекурзиван, а писање мање опција је увек добра идеја.
Можемо користити заставу -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 здраво | ацк ворлд) можете креирати моћну комбинацију за претраживање и филтрирање података у систему датотека и самим датотекама.
Извор: ввв.хабр.цом