Ack grep ஐ விட சிறந்தது

வாழ்க்கையை பெரிதும் எளிதாக்கும் ஒரு தேடல் பயன்பாட்டைப் பற்றி நான் உங்களுக்குச் சொல்ல விரும்புகிறேன். நான் சேவையகத்திற்கு வரும்போது, ​​​​ஏதேனும் ஒன்றைத் தேட வேண்டும், நான் முதலில் செய்வது, ack நிறுவப்பட்டுள்ளதா என்பதைச் சரிபார்க்க வேண்டும். இந்த பயன்பாடு grep க்கு ஒரு சிறந்த மாற்றாகும், அதே போல் ஓரளவுக்கு கண்டுபிடி மற்றும் wc. ஏன் வளரக்கூடாது? Ack ஆனது பெட்டிக்கு வெளியே அழகான அமைப்புகள், மனிதர்கள் படிக்கக்கூடிய விருப்பங்கள், perl regex மற்றும் ஒரு கட்டமைப்பு அமைப்பு ஆகியவற்றைக் கொண்டுள்ளது. நீங்கள் டெர்மினல் மூலம் தேட விரும்பினால் (வேண்டுமானால்), நீங்கள் கண்டிப்பாக முயற்சி செய்ய வேண்டும்.

அடிப்படை அம்சங்கள்

ஏக் இயல்புநிலையாக சுழல்நிலையானது, மேலும் குறைவான விருப்பங்களை எழுதுவது எப்போதும் நல்ல யோசனையாக இருக்கும்.

நாம் ஒரு கொடியைப் பயன்படுத்தலாம் -wவார்த்தை எல்லைகளால் (வெள்ளை, சாய்வுகள், முதலியன) சூழப்பட்ட எங்கள் மாதிரியின் உதாரணத்தைத் தேடுவதற்கான பயன்பாட்டைச் சொல்ல.

ack -w mysql

Ack grep ஐ விட சிறந்தது

கோப்பு வகையின்படி தேடலை ஆக் ஆதரிக்கிறது. எடுத்துக்காட்டாக, json கோப்புகளில் தொகுதி பதிப்பைக் கண்டுபிடிப்போம்.

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

Ack grep ஐ விட சிறந்தது

ஆதரிக்கப்படும் கோப்பு வகைகளின் முழுமையான பட்டியலைப் பயன்படுத்திப் பார்க்கலாம்:

ack --help-types

பதிவு கோப்பில் ஒரு சொற்றொடர் எத்தனை முறை தோன்றும் என்பதை நீங்கள் அடிக்கடி எண்ண வேண்டும், எடுத்துக்காட்டாக, ஸ்கிரிப்ட் எவ்வளவு தரவு செயலாக்கப்பட்டது என்பதைப் புரிந்துகொள்ள.

Ack grep ஐ விட சிறந்தது
test.log கோப்பில் எத்தனை முறை செயல்முறை நிகழ்கிறது என்பதை நாங்கள் கணக்கிடுகிறோம், வழக்கை கணக்கில் எடுத்துக் கொள்ளாமல் (-i).

ஒரு குறிப்பிட்ட கோப்பில் மட்டுமல்ல, ஒரு குழுவிலும் நிகழ்வுகளை நாம் எண்ணலாம். mysql என்ற வார்த்தைக்கான முந்தைய தேடலை முடிப்போம்: வார்த்தைகளின் எண்ணிக்கையை எண்ணுங்கள் (-ஸ்) *.js கோப்புகளில்(--js), எதுவும் காணப்படாத கோப்புகளைத் தவிர்த்து (-h) மற்றும் முடிவை சுருக்கவும்.

# выведем на экран все вхождения
ack --js -w mysql
# считаем общую сумму вхождений
ack --js -wch mysql

Ack grep ஐ விட சிறந்தது

கூடுதலாக, ஒவ்வொரு கோப்பிலும் உள்ள நிகழ்வுகளின் எண்ணிக்கை பற்றிய விரிவான அறிக்கையை (-l)

ack --js -w -cl mysql

Ack grep ஐ விட சிறந்தது

உங்கள் தேடலுக்கு கூடுதல் சூழல் தேவைப்பட்டால், நீங்கள் ack ஐக் கேட்கலாம்
வரை வரிகளைக் காட்டு (-B) மற்றும் பிறகு (-A) கண்டுபிடிக்கப்பட்ட வெளிப்பாடு. இதைச் செய்ய, விருப்பத்திற்குப் பிறகு காட்டப்பட வேண்டிய வரிகளின் எண்ணிக்கையை நீங்கள் குறிப்பிட வேண்டும்.

# 2 строки до 
ack --js --column -B 2 "query.once('" ./lib/

Ack grep ஐ விட சிறந்தது

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

Ack grep ஐ விட சிறந்தது

உங்களுக்கு இரண்டும் தேவைப்பட்டால், பயன்படுத்தவும் (-இருந்து)

ack --js --column -C 2 "query.once('" ./lib/

ஒரு விருப்பமும் உள்ளது (-v) தேடலைத் தலைகீழாக மாற்ற, அதாவது கொடுக்கப்பட்ட வடிவத்தைக் கொண்டிருக்காத வரிகளைக் காட்டவும்.

வழக்கமான வெளிப்பாடு

Ack, grep போலல்லாமல், Perl இணக்கமான வெளிப்பாடுகளைப் பயன்படுத்துகிறது.
என்னைப் பொறுத்தவரை இது ஒரு பெரிய பிளஸ்; வழக்கமான வெளிப்பாடுகளுக்கு நான் ஒரு தனி தொடரியல் நினைவில் கொள்ள வேண்டியதில்லை.

ack 'vars+adds+'

Ack grep ஐ விட சிறந்தது

மிகவும் சிக்கலான உதாரணம்

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

Ack grep ஐ விட சிறந்தது

பெரும்பாலும் டெம்ப்ளேட்டுடன் பொருந்துவதை மட்டுமே முடிவுகளில் விட விரும்புகிறீர்கள். --அவுட்புட் விருப்பம் இங்கே உதவும் (-o)

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

Ack grep ஐ விட சிறந்தது

கூடுதலாக, அடைப்புக்குறிகளைப் பயன்படுத்தி, கண்டுபிடிக்கப்பட்ட பகுதியைத் தேர்ந்தெடுத்து, அதை $[குழு எண்] மாறி மூலம் வெளியீட்டில் அணுகலாம். உதாரணத்திற்கு,

ack --output='version is $1' '*s+[v(d+.d+.d+)]'

Ack grep ஐ விட சிறந்தது

அக் பயனுள்ள விருப்பங்கள் உள்ளன --வரம்பு-தொடக்கம் и --வரம்பு-முடிவு. அவர்கள் எப்போது உதவுகிறார்கள்
தரவு ஒரு வரியில் அல்ல, ஆனால் பல வரி வடிவத்தில் சேமிக்கப்படுகிறது.

எடுத்துக்காட்டாக, sql குறியீட்டைக் கொண்ட ஒரு கோப்பு உள்ளது

Ack grep ஐ விட சிறந்தது

நெடுவரிசைப் பெயர்களைப் பிரித்தெடுப்போம். தொகுதியின் தொடக்கமானது SELECT இல் தொடங்கும் வரியாகவும், முடிவு FROM இல் தொடங்கும் வரியாகவும் இருக்கும்.

ack --range-start ^SELECT --range-end ^FROM 'td+.' ./test.sql

Ack grep ஐ விட சிறந்தது

தேடல் வெளிப்பாட்டில் காலம், அடைப்புக்குறி மற்றும் பிற போன்ற சிறப்பு எழுத்துகள் இருந்தால், அவற்றைப் பயன்படுத்தி தப்பிக்காமல் இருக்க, நீங்கள் விருப்பத்தைப் பயன்படுத்தலாம் -Q.

# Поиск с экранированием 
ack --json 'mysql.'    
# Поиск без экранирования
ack --json -Q mysql.

Ack grep ஐ விட சிறந்தது

கோப்புகளுடன் பணிபுரிதல்

ஒரு குறிப்பிட்ட நீட்டிப்புடன் கோப்புகளின் பட்டியலைப் பெறவும்

ack -f --js

Ack grep ஐ விட சிறந்தது

விருப்பத்தைப் பயன்படுத்தி P* உடன் தொடங்கும் அனைத்து js கோப்புகளையும் கண்டறியவும் (-g).

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

Ack grep ஐ விட சிறந்தது

கட்டமைப்பு

பயன்பாட்டிற்கு அதன் சொந்த கட்டமைப்பு கோப்பு உள்ளது. பயனருக்கான உலகளாவிய கட்டமைப்பு (~/.ackrc) மற்றும் ஒரு குறிப்பிட்ட கோப்புறைக்கான உள்ளூர் ஒன்றை நீங்கள் வைத்திருக்கலாம் (நீங்கள் கோப்புறையில் .ackrc கோப்பை உருவாக்க வேண்டும்).

configs இல் எழுதப்பட்ட பெரும்பாலான விருப்பங்கள் அழைக்கப்படும் போது கைமுறையாக குறிப்பிடப்படலாம். அவற்றில் சிலவற்றைப் பார்ப்போம்.

தேடும் போது கோப்புறையை புறக்கணிக்கவும்

--ignore-dir=dist

தனிப்பயன் கோப்பு வகையைச் சேர்ப்போம் -vue.

--type-add=vue:ext:js,vue

இப்போது நீங்கள் கோப்புகளைத் தேட --vue விருப்பத்தைப் பயன்படுத்தலாம் .vue. உதாரணத்திற்கு: ack --vue ஆப்.
இந்த விருப்பத்திற்கான நீட்டிப்புகளின் பட்டியலை நீங்கள் குறிப்பிடலாம். எடுத்துக்காட்டாக, இங்கே, -vue ஐப் பயன்படுத்தும் போது, ​​பின்வருபவை செயலாக்கப்படும்:
.js கோப்புகள்.

கோப்புகளைப் புறக்கணிக்கவும், எடுத்துக்காட்டாக minified *.min.js

--ignore-file=match:/.min.js$/

நிறுவல்

CentOS

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

முனையத்தில் தேடலை மிகவும் வசதியாகவும் நெகிழ்வாகவும் செய்ய ack பயன்பாடு உங்களை அனுமதிக்கிறது. மற்றும் பைப்லைனைப் பயன்படுத்துதல் (ack -C 10 வணக்கம் | ஏக் உலகம்) கோப்பு முறைமையிலும் கோப்புகளிலும் தரவைத் தேடுவதற்கும் வடிகட்டுவதற்கும் சக்திவாய்ந்த கலவையை நீங்கள் உருவாக்கலாம்.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்