์ถ์ ํฌ๊ฒ ๋จ์ํํ๋ ๊ฒ์ ์ ํธ๋ฆฌํฐ์ ๋ํด ๋ง์๋๋ฆฌ๊ณ ์ถ์ต๋๋ค. ์๋ฒ์ ์ ์ํด์ ๋ญ๊ฐ๋ฅผ ์ฐพ์์ผ ํ ๋, ๊ฐ์ฅ ๋จผ์ ํ๋ ์ผ์ ack๊ฐ ์ค์น๋์ด ์๋์ง ํ์ธํ๋ ๊ฒ์ ๋๋ค. ์ด ์ ํธ๋ฆฌํฐ๋ grep์ ๋ฌผ๋ก find ๋ฐ wc๋ฅผ ์ด๋ ์ ๋ ๋์ฒดํ๋ ๋ฐ ํ์ํ ์ ํธ๋ฆฌํฐ์ ๋๋ค. grep์ ์ ์๋๋์? Ack๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ๋ฉ์ง ์ค์ , ์ฌ๋์ด ์ฝ์ ์ ์๋ ์ต์ , Perl ์ ๊ท์ ๋ฐ ๊ตฌ์ฑ ์์คํ ์ ๊ฐ์ถ๊ณ ์์ต๋๋ค. ํฐ๋ฏธ๋์ ํตํด ๊ฒ์ํ๋ ๊ฒ์ ์ข์ํ์ ๋ค๋ฉด ๊ผญ ์๋ํด ๋ณด์๊ธฐ ๋ฐ๋๋๋ค.
๊ธฐ๋ณธ ๊ธฐ๋ฅ
Ack๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ๊ท์ ์ด๋ฉฐ ๋ ์ ์ ์์ ์ต์ ์ ์์ฑํ๋ ๊ฒ์ด ํญ์ ์ข์ ์๊ฐ์ ๋๋ค.
์ฐ๋ฆฌ๋ ๊น๋ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค -w๋จ์ด ๊ฒฝ๊ณ(๊ณต๋ฐฑ, ์ฌ๋์ ๋ฑ)๋ก ๋๋ฌ์ธ์ธ ํจํด์ ์ธ์คํด์ค๋ฅผ ์ฐพ๋๋ก ์ ํธ๋ฆฌํฐ์ ์ง์ํฉ๋๋ค.
ack -w mysql
Ack๋ ํ์ผ ์ ํ๋ณ ๊ฒ์์ ์ง์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด 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๋ grep๊ณผ ๋ฌ๋ฆฌ Perl ํธํ ํํ์์ ์ฌ์ฉํฉ๋๋ค.
์ ์๊ฒ๋ ์ด๊ฒ์ด ํฐ ์ฅ์ ์
๋๋ค. ์ ๊ท์์ ๋ํด ๋ณ๋์ ๊ตฌ๋ฌธ์ ๊ธฐ์ตํ ํ์๊ฐ ์์ต๋๋ค.
ack 'vars+adds+'
๋ ๋ณต์กํ ์
ack '*s+[vd+.d+.d+]'
ํ ํ๋ฆฟ๊ณผ ์ผ์นํ๋ ํญ๋ชฉ๋ง ๊ฒฐ๊ณผ์ ๋จ๊ธฐ๊ณ ์ถ์ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. --output ์ต์ ์ด ์ฌ๊ธฐ์ ๋์์ด ๋ ๊ฒ์ ๋๋ค(-o)
ack -o '*s+[vd+.d+.d+]'
๋ํ ๊ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฐพ์ ๋ถ๋ถ์ ์ ํํ๊ณ $[group number] ๋ณ์๋ฅผ ํตํด ์ถ๋ ฅ์์ โโํด๋น ๋ถ๋ถ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด,
ack --output='version is $1' '*s+[v(d+.d+.d+)]'
Ack์๋ ์ ์ฉํ ์ต์
์ด ์์ต๋๋ค --๋ฒ์ ์์ ะธ --๋ฒ์ ๋. ๊ทธ๋ค์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ๋์์ ์ค๋๋ค.
๋ฐ์ดํฐ๋ ํ ์ค์ด ์๋ ์ฌ๋ฌ ์ค ํํ๋ก ์ ์ฅ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด 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
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