ህይወትን በእጅጉ ስለሚያቃልል ስለ አንድ የፍለጋ መገልገያ ልነግርህ እፈልጋለሁ። ወደ አገልጋዩ ስደርስ እና የሆነ ነገር መፈለግ ሲያስፈልገኝ መጀመሪያ የማደርገው 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