Es vēlos jums pastāstīt par vienu meklēšanas utilītu, kas ievērojami vienkāršo dzīvi. Kad es nonāku serverī un man kaut kas jāmeklē, vispirms es pārbaudu, vai ack ir instalēts. Šī utilīta ir lielisks grep aizstājējs, kā arī zināmā mērā find un wc. Kāpēc ne grep? Ack ir labāki iestatījumi, vairāk cilvēkiem lasāmas iespējas, perl regex un konfigurācijas sistēma. Ja jums patīk (jā) meklēt caur termināli, tad noteikti ir jāizmēģina.
Pamatfunkcijas
Ack pēc noklusējuma ir rekursīvs, un rakstīt mazāk opciju vienmēr ir laba ideja.
Mēs varam izmantot karogu -wlai liktu utilītai meklēt mūsu raksta piemēru, ko ieskauj vārdu robežas (atstarpes, slīpsvītras utt.).
ack -w mysql
Ack atbalsta meklēšanu pēc faila veida. Piemēram, json failos atradīsim moduļa versiju.
ack --json '"version":s+"d+.d+.d+"'
Pilnu atbalstīto failu tipu sarakstu var apskatīt, izmantojot:
ack --help-types
Bieži vien jums ir jāuzskaita, cik reižu frāze parādās žurnālfailā, piemēram, lai saprastu, cik daudz datu skripts apstrādāja.
Mēs saskaitām, cik reižu process notiek test.log failā, neņemot vērā gadījumu (-i).
Mēs varam uzskaitīt notikumus ne tikai vienā konkrētā failā, bet arī grupā. Pabeigsim iepriekšējo vārda mysql meklēšanu: saskaitiet vārdu skaitu (ar) *.js failos(--js), izņemot failus, kuros nekas netika atrasts (-h) un rezultāta summēšana.
# выведем на экран все вхождения
ack --js -w mysql
# считаем общую сумму вхождений
ack --js -wch mysql
Turklāt mēs varam iegūt detalizētu ziņojumu par gadījumu skaitu katrā failā, izmantojot (-l)
ack --js -w -cl mysql
Ja meklēšanai nepieciešams papildu konteksts, varat jautāt ack
rādīt rindas līdz (-B) un pēc (-A) no atrastās izteiksmes. Lai to izdarītu, pēc opcijas ir jānorāda rindiņu skaits, kas jāparāda.
# 2 строки до
ack --js --column -B 2 "query.once('" ./lib/
# 2 строки после
ack --js --column -A 2 "query.once('" . /lib/
Un, ja jums ir nepieciešami abi, izmantojiet (-C)
ack --js --column -C 2 "query.once('" ./lib/
Ir arī iespēja (-v), lai apgrieztu meklēšanu, t.i., parādītu līnijas, kas nesatur noteiktu paraugu.
Regulāra izteiksme
Ack, atšķirībā no grep, izmanto ar Perl saderīgas izteiksmes.
Man tas ir liels pluss; man nav jāatceras atsevišķa regulāro izteiksmju sintakse.
ack 'vars+adds+'
Sarežģītāks piemērs
ack '*s+[vd+.d+.d+]'
Bieži vien rezultātos vēlaties atstāt tikai to, kas atbilst veidnei. Šeit palīdzēs opcija --output (-o)
ack -o '*s+[vd+.d+.d+]'
Turklāt, izmantojot iekavas, mēs varam atlasīt atrasto daļu un piekļūt tai izvadē, izmantojot mainīgo $[grupas numurs]. Piemēram,
ack --output='version is $1' '*s+[v(d+.d+.d+)]'
Ack ir noderīgas iespējas -- diapazona sākums и -- diapazona beigas. Viņi palīdz, kad
Dati tiek glabāti nevis vienā rindā, bet vairāku rindu formā.
Piemēram, ir fails ar sql kodu
Izvilksim kolonnu nosaukumus. Bloka sākums būs rinda, kas sākas ar SELECT, un beigas būs rinda, kas sākas ar FROM.
ack --range-start ^SELECT --range-end ^FROM 'td+.' ./test.sql
Ja meklēšanas izteiksmē ir īpašas rakstzīmes, piemēram, punkts, iekavas un citas, varat izmantot opciju, lai tās neizbēgtu, izmantojot . -Q.
# Поиск с экранированием
ack --json 'mysql.'
# Поиск без экранирования
ack --json -Q mysql.
Darbs ar failiem
Iegūstiet failu sarakstu ar noteiktu paplašinājumu
ack -f --js
Atrodiet visus js failus, kuru nosaukums sākas ar P*, izmantojot opciju (-g).
ack -g --js '/Pa.+.js$'
Konfigurācija
Lietderībai ir savs konfigurācijas fails. Jums var būt gan globālā konfigurācija lietotājam (~/.ackrc), gan lokāla noteiktai mapei (mapē ir jāizveido .ackrc fails).
Lielāko daļu opciju, kas ir ierakstītas konfigurācijās, var manuāli norādīt, kad tiek izsaukta. Apskatīsim dažus no tiem.
Meklējot, ignorēt mapi
--ignore-dir=dist
Pievienosim pielāgotu faila tipu -vue.
--type-add=vue:ext:js,vue
Tagad failu meklēšanai varat izmantot opciju --vue .vue. Piemēram: ack --vue App.
Šai opcijai varat norādīt paplašinājumu sarakstu. Piemēram, šeit, izmantojot -vue, tiks apstrādāts: .js faili.
Ignorēt failus, piemēram, samazinātus *.min.js
--ignore-file=match:/.min.js$/
Uzstādīšana
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
Uzstādīšana no vietnes
curl https://beyondgrep.com/ack-v3.3.1 > ~/bin/ack && chmod 0755 ~/bin/ack
Redaktoru spraudņi:
Secinājums
Šīs nav visas iespējas. Pilnu funkciju sarakstu var apskatīt, palaižot:
ack –-help
# или
ack --man
Ack utilīta ļauj padarīt meklēšanu terminālī ērtāku un elastīgāku. Un izmantojot cauruļvadu (ack -C 10 sveiki | ack pasaule) varat izveidot jaudīgu kombināciju datu meklēšanai un filtrēšanai failu sistēmā un pašos failos.
Avots: www.habr.com