Ack๊ฐ€ grep๋ณด๋‹ค ๋‚ซ์Šต๋‹ˆ๋‹ค.

์‚ถ์„ ํฌ๊ฒŒ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๊ฒ€์ƒ‰ ์œ ํ‹ธ๋ฆฌํ‹ฐ์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„์— ์ ‘์†ํ•ด์„œ ๋ญ”๊ฐ€๋ฅผ ์ฐพ์•„์•ผ ํ•  ๋•Œ, ๊ฐ€์žฅ ๋จผ์ € ํ•˜๋Š” ์ผ์€ ack๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” grep์€ ๋ฌผ๋ก  find ๋ฐ wc๋ฅผ ์–ด๋Š ์ •๋„ ๋Œ€์ฒดํ•˜๋Š” ๋ฐ ํƒ์›”ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ์ž…๋‹ˆ๋‹ค. grep์€ ์™œ ์•ˆ๋˜๋‚˜์š”? Ack๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋” ๋ฉ‹์ง„ ์„ค์ •, ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜, Perl ์ •๊ทœ์‹ ๋ฐ ๊ตฌ์„ฑ ์‹œ์Šคํ…œ์„ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„์„ ํ†ตํ•ด ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜์‹ ๋‹ค๋ฉด ๊ผญ ์‹œ๋„ํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๊ธฐ๋Šฅ

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๋ณด๋‹ค ๋‚ซ์Šต๋‹ˆ๋‹ค.

ํ…œํ”Œ๋ฆฟ๊ณผ ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ๋งŒ ๊ฒฐ๊ณผ์— ๋‚จ๊ธฐ๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. --output ์˜ต์…˜์ด ์—ฌ๊ธฐ์„œ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค(-o)

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

Ack๊ฐ€ grep๋ณด๋‹ค ๋‚ซ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฐพ์€ ๋ถ€๋ถ„์„ ์„ ํƒํ•˜๊ณ  $[group number] ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์ถœ๋ ฅ์—์„œ โ€‹โ€‹ํ•ด๋‹น ๋ถ€๋ถ„์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด,

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

Ack๊ฐ€ grep๋ณด๋‹ค ๋‚ซ์Šต๋‹ˆ๋‹ค.

Ack์—๋Š” ์œ ์šฉํ•œ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค --๋ฒ”์œ„ ์‹œ์ž‘ ะธ --๋ฒ”์œ„ ๋. ๊ทธ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์— ๋„์›€์„ ์ค๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๋Š” ํ•œ ์ค„์ด ์•„๋‹Œ ์—ฌ๋Ÿฌ ์ค„ ํ˜•ํƒœ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด 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 ํŒŒ์ผ.

ํŒŒ์ผ ๋ฌด์‹œ(์˜ˆ: ์ถ•์†Œ๋œ *.min.js)

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

์„ค์น˜

CentOS์—

yum update -y && yum install ack -y

Ubuntu

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

ack ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ„ฐ๋ฏธ๋„์—์„œ ๋” ํŽธ๋ฆฌํ•˜๊ณ  ์œ ์—ฐํ•˜๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŒŒ์ดํ”„๋ผ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ(ack -C 10 ์•ˆ๋…•ํ•˜์„ธ์š” | ack ์„ธ๊ณ„) ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ ํŒŒ์ผ ์ž์ฒด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ํ•„ํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ๊ฒฐํ•ฉ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€