Ack grep కంటే మెరుగైనది

జీవితాన్ని చాలా సులభతరం చేసే ఒక శోధన యుటిలిటీ గురించి నేను మీకు చెప్పాలనుకుంటున్నాను. నేను సర్వర్‌కు చేరుకున్నప్పుడు మరియు నేను ఏదైనా వెతకాలి, నేను చేసే మొదటి పని ack ఇన్‌స్టాల్ చేయబడిందో లేదో తనిఖీ చేయడం. ఈ యుటిలిటీ grepకి అద్భుతమైన రీప్లేస్మెంట్, అలాగే కొంత వరకు ఫైండ్ మరియు wc. ఎందుకు grep లేదు? Ack బాక్స్ వెలుపల మంచి సెట్టింగ్‌లను కలిగి ఉంది, మరిన్ని మానవులు చదవగలిగే ఎంపికలు, perl regex మరియు కాన్ఫిగర్ సిస్టమ్. మీరు టెర్మినల్ ద్వారా శోధించాలనుకుంటే (అవసరం), మీరు దీన్ని ఖచ్చితంగా ప్రయత్నించాలి.

ప్రాథమిక లక్షణాలు

Ack డిఫాల్ట్‌గా పునరావృతమవుతుంది మరియు తక్కువ ఎంపికలను వ్రాయడం ఎల్లప్పుడూ మంచి ఆలోచన.

మేము జెండాను ఉపయోగించవచ్చు -wపద సరిహద్దులు (వైట్‌స్పేస్, స్లాష్‌లు మొదలైనవి) చుట్టూ ఉన్న మా నమూనా యొక్క ఉదాహరణ కోసం వెతకడానికి యుటిలిటీని చెప్పడానికి.

ack -w mysql

Ack grep కంటే మెరుగైనది

ఫైల్ రకం ద్వారా శోధించడానికి Ack మద్దతు ఇస్తుంది. ఉదాహరణకు, 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 కంటే మెరుగైనది

మీ శోధన కోసం మీకు అదనపు సందర్భం అవసరమైతే, మీరు ACని అడగవచ్చు
వరకు పంక్తులు చూపించు (-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 కంటే మెరుగైనది

తరచుగా మీరు టెంప్లేట్‌కు సరిపోయే వాటిని మాత్రమే ఫలితాలలో ఉంచాలనుకుంటున్నారు. --output ఎంపిక ఇక్కడ సహాయపడుతుంది (-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 ఫైల్‌ని సృష్టించాలి) రెండింటినీ కలిగి ఉండవచ్చు.

కాన్ఫిగర్‌లలో వ్రాయబడిన చాలా ఎంపికలను కాల్ చేసినప్పుడు మాన్యువల్‌గా పేర్కొనవచ్చు. వాటిలో కొన్నింటిని చూద్దాం.

శోధిస్తున్నప్పుడు ఫోల్డర్‌ను విస్మరించండి

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

మాక్ OS

brew update && brew install  ack

సైట్ నుండి సంస్థాపన

curl https://beyondgrep.com/ack-v3.3.1 > ~/bin/ack && chmod 0755 ~/bin/ack

ఎడిటర్‌ల కోసం ప్లగిన్‌లు:

తీర్మానం

ఇవి అన్ని అవకాశాలు కావు. రన్ చేయడం ద్వారా ఫంక్షన్ల పూర్తి జాబితాను చూడవచ్చు:

ack –-help
# или
ack --man

AC యుటిలిటీ టెర్మినల్‌లో శోధనను మరింత సౌకర్యవంతంగా మరియు అనువైనదిగా చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. మరియు పైప్‌లైన్ ఉపయోగించి (ack -C 10 హలో | AC ప్రపంచం) ఫైల్ సిస్టమ్‌లో మరియు ఫైల్‌లలో డేటాను శోధించడం మరియు ఫిల్టర్ చేయడం కోసం మీరు శక్తివంతమైన కలయికను సృష్టించవచ్చు.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి