Ack luwih apik tinimbang grep

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 luwih apik tinimbang grep

Ack ndhukung telusuran miturut jinis file. Contone, ayo goleki versi modul ing file json.

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

Ack luwih apik tinimbang grep

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.

Ack luwih apik tinimbang grep
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

Ack luwih apik tinimbang grep

Kajaba iku, kita bisa entuk laporan rinci babagan jumlah kedadeyan ing saben file nggunakake (-l)

ack --js -w -cl mysql

Ack luwih apik tinimbang grep

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/

Ack luwih apik tinimbang grep

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

Ack luwih apik tinimbang grep

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+'

Ack luwih apik tinimbang grep

Tuladha sing luwih kompleks

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

Ack luwih apik tinimbang grep

Asring sampeyan pengin ninggalake asil mung sing cocog karo cithakan. Opsi --output bakal mbantu ing kene (-o)

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

Ack luwih apik tinimbang grep

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 luwih apik tinimbang grep

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

Ack luwih apik tinimbang grep

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

Ack luwih apik tinimbang grep

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.

Ack luwih apik tinimbang grep

Nggarap file

Entuk dhaptar file kanthi ekstensi tartamtu

ack -f --js

Ack luwih apik tinimbang grep

Temokake kabeh file js sing jenenge diwiwiti kanthi P* nggunakake pilihan (-g).

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

Ack luwih apik tinimbang grep

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

Add a comment