Ack ืขื“ื™ืฃ ืขืœ grep

ืื ื™ ืจื•ืฆื” ืœืกืคืจ ืœื›ื ืขืœ ื›ืœื™ ื—ื™ืคื•ืฉ ืื—ื“ ืฉืžืคืฉื˜ ืžืื•ื“ ืืช ื”ื—ื™ื™ื. ื›ืฉืื ื™ ืžื’ื™ืข ืœืฉืจืช ื•ืื ื™ ืฆืจื™ืš ืœื—ืคืฉ ืžืฉื”ื•, ื”ื“ื‘ืจ ื”ืจืืฉื•ืŸ ืฉืื ื™ ืขื•ืฉื” ื”ื•ื ืœื‘ื“ื•ืง ืื ack ืžื•ืชืงืŸ. ื›ืœื™ ื–ื” ื”ื•ื ืชื—ืœื™ืฃ ืžืฆื•ื™ืŸ ืขื‘ื•ืจ grep, ื›ืžื• ื’ื find ื•-wc ื‘ืžื™ื“ื” ืžืกื•ื™ืžืช. ืœืžื” ืœื grep? ืœ-Ack ื™ืฉ ื”ื’ื“ืจื•ืช ื™ืคื•ืช ื™ื•ืชืจ ืžื—ื•ืฅ ืœืงื•ืคืกื”, ืืคืฉืจื•ื™ื•ืช ืงืจื™ืื•ืช ื™ื•ืชืจ ืœืื“ื, ืคืจืœ 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

ืื ืืชื” ืฆืจื™ืš ื”ืงืฉืจ ื ื•ืกืฃ ืœื—ื™ืคื•ืฉ ืฉืœืš, ืืชื” ื™ื›ื•ืœ ืœืฉืื•ืœ ืืช 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

ื‘ื ื•ืกืฃ, ื‘ืืžืฆืขื•ืช ืกื•ื’ืจื™ื™ื ื ื•ื›ืœ ืœื‘ื—ื•ืจ ืืช ื”ื—ืœืง ืฉื ืžืฆื ื•ืœื’ืฉืช ืืœื™ื• ื‘ืคืœื˜ ื“ืจืš ื”ืžืฉืชื ื” $[group number]. ืœื“ื•ื’ืžื”,

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

Ack ืขื“ื™ืฃ ืขืœ grep

ืœืืง ื™ืฉ ืืคืฉืจื•ื™ื•ืช ืฉื™ืžื•ืฉื™ื•ืช --ื˜ื•ื•ื—-ื”ืชื—ืœื” ะธ ---range-end. ื”ื ืขื•ื–ืจื™ื ืžืชื™
ื”ื ืชื•ื ื™ื ืžืื•ื—ืกื ื™ื ืœื ื‘ืฉื•ืจื” ืื—ืช, ืืœื ื‘ืฆื•ืจื” ืžืจื•ื‘ืช ืฉื•ืจื•ืช.

ืœื“ื•ื’ืžื”, ื™ืฉ ืงื•ื‘ืฅ ืขื ืงื•ื“ 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

ืžืฆื ืืช ื›ืœ ืงื‘ืฆื™ js ืฉืฉืžื ืžืชื—ื™ืœ ื‘-P* ื‘ืืžืฆืขื•ืช ื”ืืคืฉืจื•ืช (-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.

ื”ืชืขืœื ืžืงื‘ืฆื™ื, ืœืžืฉืœ ืžืžื•ื–ืขืจ *.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 Mac

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) ื ื™ืชืŸ ืœื™ืฆื•ืจ ืงื•ืžื‘ื™ื ื” ืขื•ืฆืžืชื™ืช ืœื—ื™ืคื•ืฉ ื•ืกื™ื ื•ืŸ ื ืชื•ื ื™ื ื‘ืžืขืจื›ืช ื”ืงื‘ืฆื™ื ื•ื‘ืงื‘ืฆื™ื ืขืฆืžื.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”