ኤክ ከግሬፕ ይሻላል

ህይወትን በእጅጉ ስለሚያቃልል ስለ አንድ የፍለጋ መገልገያ ልነግርህ እፈልጋለሁ። ወደ አገልጋዩ ስደርስ እና የሆነ ነገር መፈለግ ሲያስፈልገኝ መጀመሪያ የማደርገው ack መጫኑን ማረጋገጥ ነው። ይህ መገልገያ ለ grep በጣም ጥሩ ምትክ ነው ፣ እንዲሁም መፈለግ እና wc በተወሰነ ደረጃ። ለምን grep አይደለም? ኤክ ከሳጥኑ ውጭ የተሻሉ ቅንብሮች፣ የበለጠ በሰው ሊነበቡ የሚችሉ አማራጮች፣ perl regex እና የማዋቀር ስርዓት አለው። በተርሚናሉ ውስጥ መፈለግ ከፈለጉ (መፈለግ አለብዎት) ከዚያ በእርግጠኝነት መሞከር አለብዎት።

መሰረታዊ ባህሪያት

ኤክ በነባሪነት ተደጋጋሚ ነው፣ እና ጥቂት አማራጮችን መጻፍ ሁልጊዜ ጥሩ ሀሳብ ነው።

ባንዲራ መጠቀም እንችላለን -wበቃላት ድንበሮች (በነጭ ጠፈር፣ ስሌቶች፣ ወዘተ) የተከበበ የኛን ስርዓተ-ጥለት ምሳሌ እንዲፈልግ ለመገልገያው ለመንገር።

ack -w mysql

ኤክ ከግሬፕ ይሻላል

ኤክ በፋይል አይነት መፈለግን ይደግፋል። ለምሳሌ፣ የሞጁሉን ስሪት በ json ፋይሎች ውስጥ እናገኝ።

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

ኤክ ከግሬፕ ይሻላል

የሚደገፉ የፋይል አይነቶች ዝርዝር የሚከተሉትን በመጠቀም ማየት ይቻላል፡-

ack --help-types

ብዙውን ጊዜ አንድ ሐረግ በምዝግብ ማስታወሻ ፋይል ውስጥ ስንት ጊዜ እንደሚታይ መቁጠር ያስፈልግዎታል ፣ ለምሳሌ ፣ ስክሪፕቱ ምን ያህል ውሂብ እንደተሰራ ለመረዳት።

ኤክ ከግሬፕ ይሻላል
ሂደቱን ከግምት ውስጥ ሳያስገባ በ test.log ፋይል ውስጥ ስንት ጊዜ እንደሚከሰት እንቆጥራለን (-i).

በአንድ የተወሰነ ፋይል ውስጥ ብቻ ሳይሆን በቡድን ውስጥ ያሉ ክስተቶችን መቁጠር እንችላለን። mysql የሚለውን ቃል የቀደመውን ፍለጋ እናጠናቅቅ፡ የቃላቶችን ብዛት መቁጠር (()-ከ) በ * .js ፋይሎች (--jsምንም ያልተገኙባቸውን ፋይሎች ሳይጨምር ()-h) እና ውጤቱን ማጠቃለል.

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

ኤክ ከግሬፕ ይሻላል

በተጨማሪም፣ በእያንዳንዱ ፋይል ውስጥ የተከሰቱትን ብዛት በተመለከተ ዝርዝር ዘገባን በመጠቀም ማግኘት እንችላለን።-l)

ack --js -w -cl mysql

ኤክ ከግሬፕ ይሻላል

ለፍለጋዎ ተጨማሪ አውድ ከፈለጉ፣ ackን መጠየቅ ይችላሉ።
መስመሮችን አሳይ እስከ (-B) እና በኋላ (-A) የተገኘው አገላለጽ. ይህንን ለማድረግ ከአማራጭ በኋላ መታየት ያለባቸውን የመስመሮች ብዛት መግለጽ ያስፈልግዎታል.

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

ኤክ ከግሬፕ ይሻላል

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

ኤክ ከግሬፕ ይሻላል

እና ሁለቱንም ከፈለጉ ፣ ከዚያ ይጠቀሙ (- ጋር)

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

እንዲሁም አንድ አማራጭ አለ (-v) ፍለጋውን ለመገልበጥ, ማለትም የተሰጠውን ስርዓተ-ጥለት የሌላቸው መስመሮችን አሳይ.

መደበኛ አገላለጽ

አክ፣ ከግሬፕ በተለየ፣ ከፐርል ጋር የሚስማሙ አባባሎችን ይጠቀማል።
ለእኔ ይህ ትልቅ ፕላስ ነው፤ ለመደበኛ አባባሎች የተለየ አገባብ ማስታወስ የለብኝም።

ack 'vars+adds+'

ኤክ ከግሬፕ ይሻላል

የበለጠ ውስብስብ ምሳሌ

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

ኤክ ከግሬፕ ይሻላል

ብዙ ጊዜ በውጤቶቹ ውስጥ ከአብነት ጋር የሚዛመደውን ብቻ መተው ይፈልጋሉ። የ --ውጤት አማራጭ እዚህ ይረዳል (-o)

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

ኤክ ከግሬፕ ይሻላል

በተጨማሪም ቅንፍ በመጠቀም የተገኘውን ክፍል መርጠን በ$[ቡድን ቁጥር] ተለዋዋጭ በኩል ማግኘት እንችላለን። ለምሳሌ,

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

ኤክ ከግሬፕ ይሻላል

ኤክ ጠቃሚ አማራጮች አሉት -- ክልል-ጅምር и -- ክልል-መጨረሻ. መቼ ይረዳሉ
ውሂቡ የሚቀመጠው በአንድ መስመር ሳይሆን በብዙ መስመር መልክ ነው።

ለምሳሌ, sql ኮድ ያለው ፋይል አለ

ኤክ ከግሬፕ ይሻላል

የአምድ ስሞችን እናውጣ። የማገጃው መጀመሪያ በ SELECT የሚጀምር መስመር ይሆናል፣ እና መጨረሻው በFROM የሚጀምር መስመር ይሆናል።

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

ኤክ ከግሬፕ ይሻላል

የፍለጋው አገላለጽ እንደ ክፍለ ጊዜ፣ ቅንፍ እና ሌሎች ያሉ ልዩ ቁምፊዎችን ከያዘ፣ ከዚያም እነሱን ተጠቅመው እንዳያመልጡ፣ አማራጩን መጠቀም ይችላሉ። -Q.

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

ኤክ ከግሬፕ ይሻላል

ከፋይሎች ጋር በመስራት ላይ

የተወሰነ ቅጥያ ያላቸው የፋይሎች ዝርዝር ያግኙ

ack -f --js

ኤክ ከግሬፕ ይሻላል

አማራጩን በመጠቀም ስማቸው በP* የሚጀምር ሁሉንም js ፋይሎች ያግኙ።-g).

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

ኤክ ከግሬፕ ይሻላል

ውቅር

መገልገያው የራሱ የውቅር ፋይል አለው። ሁለቱንም ሁለንተናዊ ውቅር ለተጠቃሚው (~/.ackrc) እና ለአንድ የተወሰነ አቃፊ (በአቃፊው ውስጥ የ.ackrc ፋይል መፍጠር ያስፈልግዎታል) አካባቢያዊ ሊኖርዎት ይችላል።

በውቅሮች ውስጥ የተፃፉት አብዛኛዎቹ አማራጮች ሲጠሩ በእጅ ሊገለጹ ይችላሉ. ጥቂቶቹን እንመልከት።

ሲፈልጉ አቃፊውን ችላ ይበሉ

--ignore-dir=dist

ብጁ የፋይል አይነት -vue እንጨምር።

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

አሁን ፋይሎችን ለመፈለግ የ --vue አማራጭን መጠቀም ትችላለህ .vue. ለምሳሌ: ack --vue መተግበሪያ.
ለዚህ አማራጭ የቅጥያዎችን ዝርዝር መግለጽ ይችላሉ. ለምሳሌ፣ እዚህ፣ -vue ሲጠቀሙ፣ የሚከተለው ይከናወናሉ፡
.js ፋይሎች.

ፋይሎችን ችላ ይበሉ፣ ለምሳሌ አነስተኛ *.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

Mac OS

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 ሰላም | ack ዓለም) በፋይል ስርዓቱ ውስጥ እና በፋይሎቹ ውስጥ ውሂብን ለመፈለግ እና ለማጣራት ኃይለኛ ጥምረት መፍጠር ይችላሉ።

ምንጭ: hab.com

አስተያየት ያክሉ