Men sizga hayotni sezilarli darajada soddalashtiradigan bitta qidiruv yordam dasturi haqida gapirib bermoqchiman. Men serverga kirganimda va biror narsani izlashim kerak bo'lsa, men qiladigan birinchi narsa - ack o'rnatilganligini tekshirish. Ushbu yordamchi dastur grep, shuningdek find va wc ning ma'lum darajada o'rnini bosadi. Nega grep emas? Ack-da yaxshi sozlamalar, odamlar o'qishi mumkin bo'lgan ko'proq imkoniyatlar, perl regex va konfiguratsiya tizimi mavjud. Agar siz terminal orqali qidirishni yoqtirsangiz (kerak bo'lsa), uni albatta sinab ko'rishingiz kerak.
Asosiy xususiyatlar
Ack sukut bo'yicha rekursivdir va kamroq variantlarni yozish har doim yaxshi fikrdir.
Biz bayroqdan foydalanishimiz mumkin -wyordamchi dasturga so'z chegaralari (bo'sh bo'shliq, qiyshiq chiziq va boshqalar) bilan o'ralgan naqshimiz misolini izlashni aytish.
ack -w mysql
Ack fayl turi bo'yicha qidirishni qo'llab-quvvatlaydi. Masalan, json fayllarida modul versiyasini topamiz.
ack --json '"version":s+"d+.d+.d+"'
Qo'llab-quvvatlanadigan fayl turlarining to'liq ro'yxatini ko'rish mumkin:
ack --help-types
Ko'pincha skript qancha ma'lumotni qayta ishlaganini tushunish uchun, masalan, jurnal faylida ibora necha marta paydo bo'lishini hisoblashingiz kerak.
Biz test.log faylida jarayon necha marta sodir bo'lishini hisoblaymiz (-i).
Biz hodisalarni faqat bitta faylda emas, balki guruhda sanashimiz mumkin. Keling, mysql so'zini oldingi qidiruvni yakunlaymiz: so'zlarning takrorlanish sonini hisoblang (- dan) *.js fayllarida(--js), hech narsa topilmagan fayllar bundan mustasno (-h) va natijani umumlashtirish.
# Π²ΡΠ²Π΅Π΄Π΅ΠΌ Π½Π° ΡΠΊΡΠ°Π½ Π²ΡΠ΅ Π²Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ
ack --js -w mysql
# ΡΡΠΈΡΠ°Π΅ΠΌ ΠΎΠ±ΡΡΡ ΡΡΠΌΠΌΡ Π²Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ
ack --js -wch mysql
Bundan tashqari, biz har bir fayldagi hodisalar soni to'g'risida batafsil hisobotni olishimiz mumkin (-l)
ack --js -w -cl mysql
Qidiruv uchun qo'shimcha kontekst kerak bo'lsa, ack so'rashingiz mumkin
gacha satrlarni ko'rsatish (-B) va keyin (-A) topilgan ifoda. Buning uchun variantdan keyin ko'rsatilishi kerak bo'lgan qatorlar sonini ko'rsatishingiz kerak.
# 2 ΡΡΡΠΎΠΊΠΈ Π΄ΠΎ
ack --js --column -B 2 "query.once('" ./lib/
# 2 ΡΡΡΠΎΠΊΠΈ ΠΏΠΎΡΠ»Π΅
ack --js --column -A 2 "query.once('" . /lib/
Va agar sizga ikkalasi kerak bo'lsa, foydalaning (-C)
ack --js --column -C 2 "query.once('" ./lib/
Variant ham bor(-v) qidiruvni invertatsiya qilish, ya'ni berilgan naqshni o'z ichiga olmagan qatorlarni ko'rsatish.
Muntazam ifoda
Ack, grepdan farqli o'laroq, Perl bilan mos iboralardan foydalanadi.
Men uchun bu katta plyus; oddiy iboralar uchun alohida sintaksisni eslab qolishim shart emas.
ack 'vars+adds+'
Keyinchalik murakkab misol
ack '*s+[vd+.d+.d+]'
Ko'pincha siz natijalarda faqat shablonga mos keladigan narsani qoldirishni xohlaysiz. --output opsiyasi bu erda yordam beradi (-o)
ack -o '*s+[vd+.d+.d+]'
Bundan tashqari, qavslar yordamida topilgan qismni tanlab, unga $[guruh raqami] o'zgaruvchisi orqali chiqishda kirishimiz mumkin. Masalan,
ack --output='version is $1' '*s+[v(d+.d+.d+)]'
Ack foydali variantlarga ega --diapazon-start ΠΈ --diapazon-end. Qachon yordam berishadi
Ma'lumotlar bir qatorda emas, balki ko'p qatorli shaklda saqlanadi.
Masalan, sql kodli fayl mavjud
Keling, ustun nomlarini chiqaramiz. Blokning boshi SELECT bilan boshlanadigan qator, oxiri esa FROM bilan boshlanadigan qator bo'ladi.
ack --range-start ^SELECT --range-end ^FROM 'td+.' ./test.sql
Qidiruv ifodasi nuqta, qavs va boshqalar kabi maxsus belgilarni o'z ichiga olgan bo'lsa, ularni ishlatmaslik uchun opsiyadan foydalanishingiz mumkin. -Q.
# ΠΠΎΠΈΡΠΊ Ρ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ
ack --json 'mysql.'
# ΠΠΎΠΈΡΠΊ Π±Π΅Π· ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ack --json -Q mysql.
Fayllar bilan ishlash
Muayyan kengaytmali fayllar ro'yxatini oling
ack -f --js
Nomi P* bilan boshlangan barcha JS fayllarini toping ()-g).
ack -g --js '/Pa.+.js$'
Konfiguratsiya
Yordamchi dastur o'z konfiguratsiya fayliga ega. Siz foydalanuvchi uchun global konfiguratsiyaga (~/.ackrc) va ma'lum bir jild uchun mahalliy konfiguratsiyaga ega bo'lishingiz mumkin (siz papkada .ackrc faylini yaratishingiz kerak).
Konfiguratsiyalarda yozilgan variantlarning aksariyati chaqirilganda qo'lda ko'rsatilishi mumkin. Keling, ulardan bir nechtasini ko'rib chiqaylik.
Qidirayotganda jildga e'tibor bermang
--ignore-dir=dist
Keling, maxsus fayl turini -vue qo'shamiz.
--type-add=vue:ext:js,vue
Endi siz fayllarni qidirish uchun --vue opsiyasidan foydalanishingiz mumkin .vue. Masalan: ack --vue ilovasi.
Ushbu parametr uchun kengaytmalar ro'yxatini belgilashingiz mumkin. Masalan, bu erda -vue dan foydalanganda quyidagilar qayta ishlanadi: .js fayllari.
Fayllarga e'tibor bermang, masalan, kichiklashtirilgan *.min.js
--ignore-file=match:/.min.js$/
sozlama
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
Saytdan o'rnatish
curl https://beyondgrep.com/ack-v3.3.1 > ~/bin/ack && chmod 0755 ~/bin/ack
Tahrirlovchilar uchun plaginlar:
xulosa
Bu barcha imkoniyatlar emas. Funktsiyalarning to'liq ro'yxatini ishga tushirish orqali ko'rish mumkin:
ack β-help
# ΠΈΠ»ΠΈ
ack --man
Ack yordam dasturi terminalda qidiruvni yanada qulay va moslashuvchan qilish imkonini beradi. Va quvur liniyasidan foydalanish (ack -C 10 salom | dunyo) fayl tizimida va fayllarning o'zida ma'lumotlarni qidirish va filtrlash uchun kuchli kombinat yaratishingiz mumkin.
Manba: www.habr.com