Aku pengin menehi pitutur marang kowe babagan siji sarana telusuran sing nyederhanakake urip. Nalika aku njaluk menyang server lan aku kudu goleki soko, bab pisanan aku mriksa yen ack wis diinstal. Utilitas iki minangka panggantos sing apik kanggo grep, uga golek lan wc nganti sawetara. Apa ora grep? Ack duwe setelan sing luwih apik saka kothak, luwih akeh opsi sing bisa diwaca manungsa, perl regex lan sistem konfigurasi. Yen sampeyan seneng (kudu) nggoleki liwat terminal, mula sampeyan kudu nyoba.
Fitur dhasar
Ack minangka rekursif minangka standar, lan nulis pilihan sing luwih sithik mesthi dadi ide sing apik.
Kita bisa nggunakake gendera -wkanggo ngandhani sarana kanggo nggoleki conto pola kita sing diubengi dening wates tembung (spasi putih, garis miring, lsp).
ack -w mysql
Ack ndhukung telusuran miturut jinis file. Contone, ayo goleki versi modul ing file json.
ack --json '"version":s+"d+.d+.d+"'
Dhaptar lengkap jinis file sing didhukung bisa dideleng nggunakake:
ack --help-types
Asring sampeyan kudu ngetung kaping pirang-pirang tembung katon ing file log, contone, kanggo mangerteni carane akeh data sing diproses skrip.
Kita ngitung kaping pirang-pirang proses kedadeyan ing file test.log, ora njupuk kasus akun (-i).
Kita bisa ngetung kedadeyan ora mung ing siji file tartamtu, nanging ing grup. Ayo rampungake panelusuran sadurunge kanggo tembung mysql: ngitung jumlah kedadeyan tembung (-Kanthi) ing file *.js(--js), ora kalebu file sing ora ditemokake (-h) lan nyimpulake asil.
# Π²ΡΠ²Π΅Π΄Π΅ΠΌ Π½Π° ΡΠΊΡΠ°Π½ Π²ΡΠ΅ Π²Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ
ack --js -w mysql
# ΡΡΠΈΡΠ°Π΅ΠΌ ΠΎΠ±ΡΡΡ ΡΡΠΌΠΌΡ Π²Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ
ack --js -wch mysql
Kajaba iku, kita bisa entuk laporan rinci babagan jumlah kedadeyan ing saben file nggunakake (-l)
ack --js -w -cl mysql
Yen sampeyan butuh konteks tambahan kanggo panelusuran, sampeyan bisa takon ack
nuduhake garis nganti (-B) lan sawise (-A) saka ekspresi sing ditemokake. Kanggo nindakake iki, sampeyan kudu nemtokake sawise pilihan nomer baris sing kudu ditampilake.
# 2 ΡΡΡΠΎΠΊΠΈ Π΄ΠΎ
ack --js --column -B 2 "query.once('" ./lib/
# 2 ΡΡΡΠΎΠΊΠΈ ΠΏΠΎΡΠ»Π΅
ack --js --column -A 2 "query.once('" . /lib/
Lan yen sampeyan butuh loro, banjur gunakake (-From)
ack --js --column -C 2 "query.once('" ./lib/
Ana uga pilihan (-v) kanggo ngowahi telusuran, yaiku nuduhake garis sing ora ngemot pola tartamtu.
Ekspresi reguler
Ack, ora kaya grep, nggunakake ekspresi sing kompatibel karo Perl.
Kanggoku iki minangka tambahan gedhe; Aku ora kudu ngelingi sintaks sing kapisah kanggo ekspresi reguler.
ack 'vars+adds+'
Tuladha sing luwih kompleks
ack '*s+[vd+.d+.d+]'
Asring sampeyan pengin ninggalake asil mung sing cocog karo cithakan. Opsi --output bakal mbantu ing kene (-o)
ack -o '*s+[vd+.d+.d+]'
Kajaba iku, nggunakake tanda kurung kita bisa milih bagean sing ditemokake lan ngakses ing output liwat variabel $[nomer grup]. Tuladhane,
ack --output='version is $1' '*s+[v(d+.d+.d+)]'
Ack duwe opsi migunani --rentang-wiwitan ΠΈ --rentang-mburi. Padha bantuan nalika
Data disimpen ora ing siji baris, nanging ing wangun multi-baris.
Contone, ana file kanthi kode sql
Ayo extract jeneng kolom. Awal pemblokiran bakal dadi baris sing diwiwiti karo SELECT, lan pungkasan bakal dadi baris sing diwiwiti saka FROM.
ack --range-start ^SELECT --range-end ^FROM 'td+.' ./test.sql
Yen ekspresi telusuran ngemot karakter khusus kayata titik, kurung, lan liya-liyane, mula supaya ora uwal nggunakake , sampeyan bisa nggunakake opsi kasebut. -Q.
# ΠΠΎΠΈΡΠΊ Ρ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ
ack --json 'mysql.'
# ΠΠΎΠΈΡΠΊ Π±Π΅Π· ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ack --json -Q mysql.
Nggarap file
Entuk dhaptar file kanthi ekstensi tartamtu
ack -f --js
Temokake kabeh file js sing jenenge diwiwiti kanthi P* nggunakake pilihan (-g).
ack -g --js '/Pa.+.js$'
Konfigurasi
Utilitas kasebut duwe file konfigurasi dhewe. Sampeyan bisa duwe loro config global kanggo pangguna (~ / .ackrc) lan lokal kanggo folder tartamtu (sampeyan kudu nggawe file .ackrc ing folder).
Umume opsi sing ditulis ing konfigurasi bisa ditemtokake kanthi manual nalika diarani. Ayo padha ndeleng sawetara.
Nglirwakake folder nalika nggoleki
--ignore-dir=dist
Ayo nambahake jinis file khusus -vue.
--type-add=vue:ext:js,vue
Saiki sampeyan bisa nggunakake pilihan --vue kanggo nggoleki file .vue. Tuladhane: ack --vue App.
Sampeyan bisa nemtokake dhaptar ekstensi kanggo pilihan iki. Contone, ing kene, nalika nggunakake -vue, ing ngisor iki bakal diproses: file .js.
Nglirwakake file, contone minified *.min.js
--ignore-file=match:/.min.js$/
Instalasi
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
Instalasi saka situs
curl https://beyondgrep.com/ack-v3.3.1 > ~/bin/ack && chmod 0755 ~/bin/ack
Plugins kanggo editor:
kesimpulan
Iki ora kabeh kemungkinan. Dhaptar lengkap fungsi bisa dideleng kanthi mlaku:
ack β-help
# ΠΈΠ»ΠΈ
ack --man
Utilitas ack ngidini sampeyan nggawe telusuran ing terminal luwih trep lan fleksibel. Lan nggunakake pipa (ack -C 10 hello | ack donya) sampeyan bisa nggawe gabungan sing kuat kanggo nggoleki lan nyaring data ing sistem file lan ing file kasebut dhewe.
Source: www.habr.com