[LINUX] ๐ ์ ๊ทํํ์ ๊ณผ grep ๋ช ๋ น์ด ์ ๋ณตํ๊ธฐ [ํจํด ๊ฒ์] [ํ์ฅ๋ธ๋ํท]
ํ์ผ/๋๋ ํ ๋ฆฌ ํจํด ๊ฒ์
๋ฆฌ๋ ์ค๋ฅผ ์ฌ์ฉํ๋ค ๋ณด๋ฉด ๋ก๊ทธํ์ผ์ด๋, ํ ์คํธ ํ์ผ์์ ํน์ ๋ฌธ์์ด์ ์ฐพ์ ๋, ํน์ ๋๋ ํฐ๋ฆฌ ๋ด์์ ํน์ ๋ฌธ์๋ฅผ ํฌํจํ๋ ํ์ผ์ ์ฐพ์ ๋์ ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ์๊ธด๋ค.
๋ฐ๋ก ์ด๋ ์ฌ์ฉํ๋ ๋ช
๋ น์ด์ธ $ grep ์ ์
๋ ฅ์ผ๋ก ์ ๋ฌ๋ ํ์ผ์ ๋ด์ฉ ํน์ ๋๋ ํ ๋ฆฌ์์,
ํ์ผ๋ด์ฉ์ด๋ ํ์ผ์ด๋ฆ์ ํน์ ๋ฌธ์์ด ํจํด์ ์ฐพ๊ณ ์ํ ๋ ์ฌ์ฉํ๋ ๋ช ๋ น์ด ์ด๋ค.
$ grep [์ต์
] [ํจํด] [ํ์ผ๋ช
]
$ ๋ค๋ฅธ ๋ช
๋ น์ด | grep [ํจํด/ํ์ผ๋ช
] # ํ์ดํ์ ์ฐ๊ฒฐํด์ ์์ฃผ ์ฌ์ฉ๋๋ค.
grep ์ global / regular expression / printprint์์ ๊ฐ๊ฐ์ ๋จธ๋ฆฟ๊ธ์๋ฅผ ๋ฐ ์จ ๊ฒ์ด๋ฉฐ, find์ ํจ๊ป ๋ฆฌ๋ ์ค์์
๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋ช ๋ น์ด ์ค ํ๋์ด๋ค.
ํนํ tail์ด๋ ls ๋ฑ ๋ค์ํ ๋ช ๋ น์ด์ ์กฐํฉํ์ฌ ์์ฉ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์ ์ด grep ๋ช ๋ น์ด๋ ๋ฆฌ๋ ์ค์์ ๋ฅ์ํ๊ฒ ์ฌ์ฉํ ์ค ์์์ผ ํ๋ ๊ธฐ๋ณธ ๋ช ๋ น์ด ์ค ํ๋์ด๋ค.
๋ฆฌ๋ ์ค ์ ๊ทํํ์
grep ๋ช ๋ น์ด๋ ์ ๊ทํํ์ ๊ณผ ์กฐํฉํด์ ํจํด ๋งค์นญ์ผ๋ก ์์ฃผ ์ฐ์ด๋ ํธ์ด๋ค.
์ ๊ท ํํ์(Regular Expression)์ด๋, ํน์ ๊ท์น์ ๊ฐ์ง ๋ฌธ์์ด ์งํฉ์ ํํํ๊ธฐ ์ํ ํ์ ์ธ์ด๋ก์จ, ์ฃผ๋ก ๋ฌธ์์ด ํจํด ๋งค์นญ์ ๊ฒ์ฌํ๊ฑฐ๋ ๋๋ ๋ฌธ์์ด์ ์นํํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฌธ๋ฒ์ด๋ค.
๋ฌธ์์ด ๊ฒ์์ ์ ๊ท ํํ์์ ์ ์ฉํ๊ฒ ๋๋ฉด,
์ง์ ๋ ๋ฌธ์์ด์ ๋ฌธ์๊ฐ ๋จ์ํ "๊ฐ์์ง(equal)" ์ฌ๋ถ๊ฐ ๊ฒ์ฌ๋๋ ๊ฒ์ด ์๋๋ผ,
์ ๊ท ํํ์์ ๊ท์น์ ๋งค์นญ(Matching)๋๋์ง ์ฌ๋ถ๊ฐ ๊ฒ์ฌ๋๊ฒ ๋๋ค.
๋ํ ๊ฐ ์ธ์ด๋ง๋ค ์ ๊ท์ ๋ฌธ๋ฒ์ด ์์ฃผ ์ฝ๊ฐ ์ฐจ์ด๊ฐ ์๋ค.
๋ฆฌ๋ ์ค๋ ๋ฆฌ๋ ์ค๋ง์ ๋ฉํ ๋ฌธ์๊ฐ ์กด์ฌํ๋ค.
๋ฉํ ๋ฌธ์ : ํน์ ๋ฌธ์์ ํจํด์ ํํํ๊ธฐ ์ํ ๊ท์น ๋ฌธ๋ฒ
๋ฉํ๋ฌธ์ | ์ ๋ฏธ | ์ ์ | ์ค ๋ช |
^ | ํ์ ์์ | $ grep '^linux' | linux๋ก ์์ํ๋ ํ |
$ | ํ์ ๋ | $ grep 'linux$' | linux๋ก ๋๋๋ ํ |
๏ผผ< | ๋จ์ด์ ์์ | $ grep '๏ผผ<linux' | linux๋ก ์์ํ๋ ๋จ์ด๋ฅผ ํฌํจํ๋ ํ |
๏ผผ> | ๋จ์ด์ ๋ | $ grep 'linux๏ผผ>' | linux๋ก ๋๋๋ ๋จ์ด๋ฅผ ํฌํจํ๋ ํ |
. | ์์์ ๋ชจ๋ ๋ฌธ์ ์ข ๋ฅ ํ๋ | $ grep 'l...x' | l๊ณผ x์ฌ์ด์ ์ธ๊ธ์๋ง ์์ ์ ์์ |
? | ๋ฌธ์๊ฐ ํ๊ฐ๊ฐ ์๊ฑฐ๋ ์๊ฑฐ๋ | $ grep 'lin?x' | ?์ ๋ฌธ์ํ๋๊ฐ ๋ค์ด๊ฐ๋ ๊ฒ์ ๊ฒ์ |
* | ๋ฌธ์๊ฐ ์ฌ๋ฌ๊ฐ ๋ค์ด๊ฐ๊ฑฐ๋ ์๊ฑฐ๋ | $ grep 'linux*' $ grep 'lin*' $ grep 'l*x' $ grep '*linux' |
linux๋ฅผ ๋ชจ๋ ๊ฒ์ (์ฌ๋ฌ ํ์ผ์ ์ด๋ฆ์ ํํํ ๋ ์ฌ์ฉํ๊ณ , ๋จ๋ ์ผ๋ก * ์ฌ์ฉํ๋ฉด ๋ชจ๋ ํ์ผ์ ๋ํ๋) |
| | or ๊ธฐํธ | $ grep 'ab|cd|ef' | ab๋ cd๋ ef ์ ์ค ํ๋๋ผ๋ ๋ค์ด์์ผ๋ฉด ๊ฒ์ |
๏ผผ(\) | ํน์ ๊ธฐํธ or ๋ฉํ ๋ฌธ์๋ฅผ ๋ฌด์ (๋ฌธ์ ๊ทธ ์์ฒด๋ฅผ ๋ํ๋) |
$ grep 'lin๏ผผ.๏ผผx' | .๋ฌธ์๋ฅผ ๋์ํ๋ ๊ฒ์ด ์๋๋ผ lin.x๋ผ๋ ๋ฌธ์๋ฅผ ๊ฒ์ |
[] | []๋ ์์ ๋ด์ฉ์ ๋ฃ์ด ๊ทธ ๋ฌธ์๋ค ์ค ํ๋ฌธ์๋ฅผ ์๋ฏธ | $ grep 'linux[123]' | linux1, linux2, linux3์ ๊ฒ์ |
[0-9], [a-z] | ์ซ์๋ ์ํ๋ฒณ์ ๋ฒ์๋ก ์ค์ ๊ฐ๋ฅ | $ grep 'linux[0-9]' | linux1๋ถํฐ linux9๊น์ง ๊ฒ์ |
[^] | []์์ ์๋ ^๋ ๋ถ์ ์ ์๋ฏธ ์์ ์๋ ๋ฌธ์๋ฅผ ์ ์ธํ๋ค๋ ๋ป |
$ grep 'linux[^1-3]' | linux1 ๋ถํฐ linux3๊น์ง๋ฅผ ์ ์ธํ ๋ฌธ์ ๊ฒ์ |
๏ผผ<๏ผผ> | ๏ผผ<๋ ๋จ์ด์ ์์๏ผผ>๋ ๋จ์ด์ ๋(์์ ์๋ ์ง์์ ํฉ์น๊ฒ) | $ grep '๏ผผ<linux๏ผผ>' |
linux๋ก ์์ํ๋ ๋จ์ด, linux๋ก ๋๋๋ ๋จ์ด ๊ฒ์ ์๋ฅผ ๋ค์ด alinux2์ ๊ฐ์ด ์ค๊ฐ์ linux๊ฐ ์๋ ๊ฒ์ ์๋จ |
a๏ผผ{n๏ผผ} | ๋ฌธ์ a๋ฅผ n๋ฒ ๋ฐ๋ณต | $ grep 'a๏ผผ{2๏ผผ}' | a ๋ฌธ์๊ฐ 2๋ฒ ์ฐ์ ๋ฐ๋ณต๋๋ ๊ฒ์ ๊ฒ์ |
a๏ผผ{n,๏ผผ} | ๋ฌธ์ a๋ฅผ ์ ์ด๋ n๋ฒ ์ด์ ๋ฐ๋ณต (์ฝค๋ง๊ฐ ์์) | $ grep 'a๏ผผ{2,๏ผผ}' | a ๋ฌธ์๊ฐ ์ต์ํ 2๋ฒ ์ด์ ๋ฐ๋ณต๋๋ ๊ฒ์ ๊ฒ์ |
a๏ผผ{m,n๏ผผ} | ๋ฌธ์ a๋ฅผ m๋ฒ ์ด์ n๋ฒ ์ดํ๋ก ๋ฐ๋ณต (๋ฐ๋ณต ๋ฒ์ ์ง์ ) | $ grep 'a๏ผผ{2,4๏ผผ}' | a ๋ฌธ์๊ฐ 2๋ฒ ์ด์ 4๋ฒ ์ดํ๋ก ๋ฐ๋ณต๋๋ ๋ถ๋ถ |
๏ผผ(..๏ผผ) | ๋ค์ ์ฌ์ฉ์ ์ํด ํ๊ทธ๋ฅผ ๋ถ์ด๋ ์ญํ ์ต๋ 9๊ฐ๊น์ง ์ฌ์ฉ๊ฐ๋ฅ |
$ grep ๏ผผ(linux๏ผผ)A๏ผผ1B | linuxA์ ๏ผผ1์ด ํ๊ทธ๋์ดlinuxAlinuxB๋ก ๋์ |
ํ์ฅ ๋ธ๋ํท
์์ ๋ฌธ์์ด ํจํด์ ์ผ์ผํ ์น๊ธฐ ๋ถ๋ด์ค๋ฌ์ฐ๋๊น, ํธ๋ฆฌ์ฑ์ ์ํ ๋จ์ถ ์์ ์ ๋๋ก ์ดํดํ๋ฉด ๋๋ค.
$ grep "[ํ์ฅ๋ธ๋ํท]" ํ์ผ๋ช
# ๋๊ดํธ [] ๋ฅผ ๋๋ฒ ์ฐ๊ฒ๋๋ค.
๋ธ๋ํท | ์๋ฏธ |
[:alnum:] | A-Z, a-z, 0-9 ์ํ๋ฒณ ๋ฌธ์์ ์ซ์๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด |
[:alpha:] | A-Z, a-z ์ํ๋ฒณ ๋ฌธ์ |
[:blank:] | \x09 ์คํ์ด์ค์ ํญ |
[:cntrl:] | ์ปจํธ๋กค ์ ์ด ๋ฌธ์ |
[:digit:] | 0-9 ์ซ์ |
[:graph:] | !-~ ๊ณต๋ฐฑ์ด ์๋ ๋ฌธ์(์คํ์ด์ค, ์ ์ด ๋ฌธ์๋ค์ ์ ์ธํ ๋ฌธ์) |
[:lower:] | a-z ์๋ฌธ์ |
[:print:] | graph์ ์ ์ฌํ์ง๋ง ์คํ์ด์ค ๋ฌธ์๋ฅผ ํฌํจ |
[:punct:] | !-/:-@[-'{-~ ๋ฌธ์ฅ ๋ถํธ ๋ฌธ์ |
[:space:] | \t\v\f ๋ชจ๋ ๊ณต๋ฐฑ ๋ฌธ์(newline ์ค๋ฐ๊ฟ, ์คํ์ด์ค, ํญ) |
[:upper:] | A-Z ๋๋ฌธ์ |
[:xdigit:] | 16์ง์์์ ์ฌ์ฉํ ์ ์๋ ์ซ์ |
# ํ์ผ๋ด์ฉ์ ์์์๋ฌธ์,์ซ์ ์๋ ๋ฌธ์์ด ๊ฒ์
$ grep "^[[:alnum:]]" ํ์ผ๋ช
# ํ์ผ๋ด์ฉ ์ค ๋๋ฌธ์๊ฐ ๋ค์ด๊ฐ ๋ฌธ์์ด ๊ฒ์
$ grep "^[[:upper:]]" ํ์ผ๋ช
Vim์์ ์ ๊ท ํํ์์ ์ฌ์ฉํ ๊ฒ์
vim์์ ESCํค๋ฅผ ๋๋ฅด๊ณ /๊ฒ์ํ ๋ฌธ์์ด ํํ๋ฅผ ์ ๋ ฅํ๊ณ ์ํฐ๋ฅผ ๋๋ฅด๋ฉด ๊ฒ์ ๊ฐ๋ฅ
/์์ด$ # ์์ด๋ก ๋๋๋ ๋ฌธ์์ด ๊ฒ์
/...์ธ # 4๊ฐ ๋ฌธ์๋ก ๊ตฌ์ฑ๋ ๋ฌธ์์ด ์ค ๋ง์ง๋ง ๋ฌธ์๊ฐ “์ธ”๋ก ๋๋๋ ๋ฌธ์์ด ๊ฒ์
/o*ve # o๋ก ์์๋๋ ๋ฌธ์๋ถํฐ ve๋ก ๋๋๋ ๋ชจ๋ ๋ฌธ์์ด ๊ฒ์
/[Ll]ove # Love, love
grep ๋ช ๋ น์ด
grep์ ์ข ๋ฅ
grep์ 3๊ฐ์ง ์ข ๋ฅ๊ฐ ์๋ค.
๋ช ๋ น์ด | ์ค๋ช | ์ ๊ทํํ์ ์ฌ์ฉ |
grep | ๋ค์ค ํจํด์ ๊ฒ์ํ๋ค. | O |
egrep | ์ ๊ท ํํ์ ํจํด์ผ๋ก ๊ฒ์ํ๋ค. | O |
fgrep | ๋ฌธ์์ด ํจํด์ผ๋ก ๊ฒ์ํ๋ค. | X |
egrep ์ ์ ๊ทํํ์๋ง์ผ๋ก ๊ฒ์ํ๋ ๊ฒ์ด๊ณ , fgrep ์ ๋ฌธ์์ด๋ก ๊ฒ์ํ๋ grep์ ๋งํ๋ฉฐ
๊ฐ๊ฐ grep ์ -E, -F ์ต์
์ ์ฌ์ฉํ์ ๋์ ๊ฒฐ๊ณผ๋ ๊ฐ๋ค.
grep ์ต์
$ grep [OPTION...] PATTERN [FILE...]
-E : PATTERN์ ํ์ฅ ์ ๊ท ํํ์(Extended RegEx)์ผ๋ก ํด์.
-F : PATTERN์ ์ ๊ท ํํ์(RegEx)์ด ์๋ ์ผ๋ฐ ๋ฌธ์์ด๋ก ํด์.
-G : PATTERN์ ๊ธฐ๋ณธ ์ ๊ท ํํ์(Basic RegEx)์ผ๋ก ํด์.
-P : PATTERN์ Perl ์ ๊ท ํํ์(Perl RegEx)์ผ๋ก ํด์.
-e : ๋งค์นญ์ ์ํ PATTERN ์ ๋ฌ.
-f : ํ์ผ์ ๊ธฐ๋ก๋ ๋ด์ฉ์ PATTERN์ผ๋ก ์ฌ์ฉ.
-i : ๋/์๋ฌธ์ ๋ฌด์.
-v : ๋งค์นญ๋๋ PATTERN์ด ์กด์ฌํ์ง ์๋ ๋ผ์ธ ์ ํ.
-w : ๋จ์ด(word) ๋จ์๋ก ๋งค์นญ.
-x : ๋ผ์ธ(line) ๋จ์๋ก ๋งค์นญ.
-z : ๋ผ์ธ์ newline(\n)์ด ์๋ NULL(\0)๋ก ๊ตฌ๋ถ.
-m : ์ต๋ ๊ฒ์ ๊ฒฐ๊ณผ ๊ฐฏ์ ์ ํ.
-b : ํจํด์ด ๋งค์น๋ ๊ฐ ๋ผ์ธ(-o ์ฌ์ฉ ์ ๋ฌธ์์ด)์ ๋ฐ์ดํธ ์ต์
์ถ๋ ฅ.
-n : ๊ฒ์ ๊ฒฐ๊ณผ ์ถ๋ ฅ ๋ผ์ธ ์์ ๋ผ์ธ ๋ฒํธ ์ถ๋ ฅ.
-H : ๊ฒ์ ๊ฒฐ๊ณผ ์ถ๋ ฅ ๋ผ์ธ ์์ ํ์ผ ์ด๋ฆ ํ์.
-h : ๊ฒ์ ๊ฒฐ๊ณผ ์ถ๋ ฅ ์, ํ์ผ ์ด๋ฆ ๋ฌด์.
-o : ๋งค์น๋๋ ๋ฌธ์์ด๋ง ํ์.
-q : ๊ฒ์ ๊ฒฐ๊ณผ ์ถ๋ ฅํ์ง ์์.
-a : ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ํ
์คํธ ํ์ผ์ฒ๋ผ ์ฒ๋ฆฌ.
-I : ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ๊ฒ์ฌํ์ง ์์.
-d : ๋๋ ํ ๋ฆฌ ์ฒ๋ฆฌ ๋ฐฉ์ ์ง์ . (read, recurse, skip)
-D : ์ฅ์น ํ์ผ ์ฒ๋ฆฌ ๋ฐฉ์ ์ง์ . (read, skip)
-r : ํ์ ๋๋ ํ ๋ฆฌ ํ์.
-R : ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉฐ ๋ชจ๋ ํ์ ๋๋ ํ ๋ฆฌ ํ์.
-L : PATTERN์ด ์กด์ฌํ์ง ์๋ ํ์ผ ์ด๋ฆ๋ง ํ์.
-l : ํจํด์ด ์กด์ฌํ๋ ํ์ผ ์ด๋ฆ๋ง ํ์.
-c : ํ์ผ ๋น ํจํด์ด ์ผ์นํ๋ ๋ผ์ธ์ ๊ฐฏ์ ์ถ๋ ฅ.
์์ฃผ ์ฌ์ฉํ๋ ์ต์
์ต์ | ์๋ฏธ |
-c | ํจํด๊ณผ ์ผ์นํ๋ ํ ์๋ฅผ ์ถ๋ ฅํ๋ ์ต์ |
-i | ๊ฒ์ํ ๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๋ ์ต์ |
-w | ๋จ์ด ๋จ์๋ก ํจํด ๊ฒ์ํ๋ ์ต์ |
-a | grep์ ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ํ ์คํธ ํ์ผ์ฒ๋ผ ์ฒ๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๋ ์ต์ |
-n | ํจํด๊ณผ ์ผ์นํ๋ ์ค์ ๋ฒํธ์ ๋ด์ฉ์ ๊ฐ์ด ์ถ๋ ฅํด์ฃผ๋ ์ต์ |
-h | ํ์ผ์ ์ด๋ฆ์ ์ถ๋ ฅํ์ง ์๊ณ ํจํด์ ์ํด์๋ ์ค๋ง ์ถ๋ ฅํ๋ ์ต์ |
-r | ํ์ ๋๋ ํ ๋ฆฌ๊น์ง ํจํด์ ์ฐพ์์ฃผ๋ ์ต์ |
-v | ํจํด๊ณผ ์ผ์นํ์ง ์๋ ์ค์ ์ถ๋ ฅ |
-E | grep์ ํ๋์ ํจํด์ ๊ฒ์ํ๋๋ฐ ์ด ์ต์ ์ | ์ ์ฐ๊ณํ์ฌ ์ฌ๋ฌ ํจํด์ ๊ฒ์ํ๋ ์ต์ |
grep ์ค์ ์ฌ์ฉ ์์ (์ต์ )
๋์ ํ์ผ์์ ๋ฌธ์์ด ๊ฒ์
$ grep "STR" FILE1.txt # FILE.txt์์ "STR" ๋ฌธ์์ด ๊ฒ์.
$ grep "STR" * # ํ์ฌ ๋๋ ํ ๋ฆฌ ๋ชจ๋ ํ์ผ์์ "STR" ๋ฌธ์์ด ๊ฒ์.
$ grep "STR" *.ext # ext ํ์ฅ์๋ฅผ ๊ฐ์ง ํ์ผ์์ "STR" ๋ฌธ์์ด ๊ฒ์.
๋์๋ฌธ์ ๊ตฌ๋ถํ์ง ์๊ณ ๋ฌธ์์ด ๊ฒ์ (-i)
grep -i "STR" FILE.txt # FILE.txt ํ์ผ์์ ๋์๋ฌธ์ ๊ตฌ๋ถ์์ด(STR, str) ๋ฌธ์์ด ๊ฒ์.
๋งค์นญ๋๋ PATTERN์ด ์๋ ๋ผ์ธ ์ ํ (-v)
์ด๋ค ๊ฒฝ์ฐ์๋ ๋ฌธ์์ด์ด ๋งค์นญ๋๋ ๋ผ์ธ์ด ์๋, ๋งค์นญ๋๋ ํจํด์ด ์กด์ฌํ์ง ์๋ ๋ผ์ธ์ ์ ํํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
grep -v "STR" FILE.txt # FILE.txt ํ์ผ์์ "STR"์ด ํฌํจ๋์ง ์์ ๋ผ์ธ ํ์.
๋จ์ด ๋จ์๋ก ๋ฌธ์์ด ๊ฒ์ (-w)
grep -w "STRING" FILE.txt # FILE.txt ํ์ผ์์ "STRING"์ด๋ผ๋ ๋ฌธ์์ด(๋จ์ด ๋จ์) ๊ฒ์.
๊ฒ์๋ ๋ฌธ์์ด์ด ํฌํจ๋ ๋ผ์ธ ๋ฒํธ ์ถ๋ ฅ (-n).
grep -n "STR" FILE.txt # > "STR"์ด ํฌํจ๋ ๋ผ์ธ ๋ฒํธ ์ถ๋ ฅ.
ํ์ ๋๋ ํ ๋ฆฌ๋ฅผ ํฌํจํ ๋ชจ๋ ํ์ผ์์ ๋ฌธ์์ด ๊ฒ์ (-r)
# ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์๋ ๋ชจ๋ ํ์ผ๊ณผ ๊ทธ ํ์ ๋๋ ํ ๋ฆฌ์ ํ์ผ๋ค๊น์ง ๋ชจ๋ "STR"์ด ํฌํจํ ๋ฌธ์์ด ์ถ๋ ฅ.
grep -r "STR" *
๊ฒ์ ๊ฒฐ๊ณผ ๊ฐฏ์ ์ ํ (-m)
grep -m 100 "STR" FILE.txt # FILE.txt ํ์ผ์์ ๋ฌธ์์ด "STR"์ด ํฌํจ๋ ๊ฒฐ๊ณผ๋ฅผ 100๊ฐ๊น์ง๋ง ํ์.
๊ฒ์ ๊ฒฐ๊ณผ ์์ ํ์ผ ์ด๋ฆ ํ์ (-H)
$ grep -H "STR" * # "STR"์ด ํฌํจ๋ ํ์ผ ์ด๋ฆ ํ์.
$ grep -Hn "STR" * # "STR"์ด ํฌํจ๋ ํ์ผ ์ด๋ฆ๊ณผ ๋ผ์ธ ๋ฒํธ ํ์.
์ ๊ท์ ํจํด ๊ฒ์
# "the"๋ก ์์ํ์ฌ "step"์ผ๋ก ๋๋๋ ํจํด ๊ฒ์.
grep "the.*step" *
#"A"๋ก ์์ํ์ฌ "Z"๋ก ๋๋๋ ํจํด ๊ฒ์.
grep "A.*Z" *
# "step0", "step1", ..., "step9" ํจํด์ ๊ฒ์.
$ grep "step[0-9]" *
# "[0-9]" ๋ฌธ์์ด ๊ฒ์.
grep "[0-9]" *
#FILE.txt ํ์ผ์์ * ๋ฌธ์ ๊ฒ์.
$ grep "\*" FILE.txt
#FILE.txt ํ์ผ์์ . ๋ฌธ์ ๊ฒ์.
$ grep "\." FILE.txt
grep "^C" FILE.txt # FILE.txt ์์ C๋ก ์์ํ๋ ๋ผ์ธ ๊ฒ์.
grep "^1" FILE.txt # FILE.txt ์์ "1"์ผ๋ก ์์ํ๋ ๋ผ์ธ ๊ฒ์.
grep "\.$" FILE.txt # FILE.txt "." ์ผ๋ก ๋๋๋ ๋ผ์ธ ๊ฒ์.
grep -v "\.$" FILE.txt # FILE.txt "." ์ผ๋ก ๋๋์ง ์๋ ๋ผ์ธ ๊ฒ์.
ํน์ ๋ ์ง์ ๋ชจ๋ ๋ก๊ทธ ํ์ผ๋ค ์ค์์ grep
๋ก๊ทธ ํ์ผ์ด ํ ๋ ์ง์ ๊ต์ฅํ ๋ง์ ๋(์: Jenkins build log), ํน์ ๋ ์ง์ ๋ก๊ทธ ํ์ผ๋ง ์ฐพ์์ ๊ฑฐ๊ธฐ์ ํน์ ๋ฌธ์์ด ๊ฒ์
# ๋ ์ง ๊ธฐ์ค์ด ์์ฑ์ผ์ด๋ผ๊ณ ํ ๋, ์ฒซ ๋ ์ง๋ ๊ฒ์ํ๊ณ ์ ํ๋ ๋ ์ง, ๋๋ฒ์งธ๋ ๊ฒ์ํ๊ณ ์ ํ๋ ๋ค์๋ ๋ ์ง
$ find . -name *.log -newerct yyyy-MM-dd ! -newerct yyyy-MM-dd -exec grep -Hni '๊ฒ์์ด' {} \;
์ค์๊ฐ ๋ก๊ทธ ๋ณด๊ธฐ (tail + grep)
๋๋ถ๋ถ ๊ฐ๋ฐ์๋ค์ด ์ค์๊ฐ ๋ก๊ทธ ์ฒดํฌ๋ฅผ ํ ๋๋,
tail๊ณผ grep ๋ช ๋ น์ด ์กฐํฉ์ผ๋ก ๋ก๊ทธํ์ผ์์ ์์ ์ด ์ํ๋ ํค์๋๋ง ์ถ์ถ ํ๋ ๋ฐฉ๋ฒ์ ์ด๋ค.
# mylogํ์ผ์ ์ค์๊ฐ์ผ๋ก ์ก์ธ์คํ๊ณ IP์ฃผ์๊ฐ 192.168.49.16์ธ ํ๋ง ์ถ์ถ
$ tail -f mylog.log | grep 192.168.15.86
Pipe ๋ช ๋ น์ด์ ์ฝ๋ผ๋ณด
grep ๋ช ๋ น์ด๋ ๋จ๋ ์ผ๋ก๋ ๋ง์ด ์ฌ์ฉ๋์ง๋ง, ๋ค๋ฅธ ๋ช ๋ น์ด์ pipe ๋ช ๋ น์ด "|"๋ก ์ฐ๊ฒฐํ์ฌ ์์ฃผ ์ฌ์ฉ๋๋ค.
๋งค์ฐ ์ ์ฉํ๋ฉฐ ํ์ฉ๋๊ฐ ๋๋ค.
ํ์ดํ "|" ๋ช ๋ น์ด๋
์ผ์ชฝ ๋ช ๋ น์ด์ ์ถ๋ ฅ์ -> ์ค๋ฅธ์ชฝ ๋ช ๋ น์ด์ ์ ๋ ฅ์ผ๋ก ์ ๋ฌํ๋ ๋ช ๋ น์ด๋ค.
# ํ์ฌ ํ๋ก์ธ์ค๋ฅผ ์ถ๋ ฅ์์ "java"๋ผ๋ ๋ฌธ์์ด์ ํฌํจํ๋ ๋ผ์ธ๋ง ํ์
$ ps -ef | grep "java"
# ์ดํ๋ฆฌ์ผ์ด์
์ ๋ก๊ทธ๋ฅผ tail ํ๋ฉด์ "error" ๋ฌธ์์ด์ ํฌํจํ๋ ๋ผ์ธ ํ์
$ tail -f application.log | grep -i "error"
# netstat๋ช
๋ น์ด๋ก ๋คํธ์ํฌ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๋๋ฐ ๊ทธ์ค tcp๋ง ํ์ธ
$ netstat | grep "tcp"
# ์ดํ๋ฆฌ์ผ์ด์
๋ก๊ทธ์ค "error" ๋ฌธ์์ด์ ํฌํจํ๋ ๋ผ์ธ์ ํ ํ๋ฉด์ฉ ํ์
$ grep "error" application.log | more
# mylog.txt ํ์ผ์์ Apple๊ณผ Banana์ด ์๋ ๋ฌธ์์ด๋ค์ ํ์
$ cat mylog.txt | grep 'Apple' | grep 'Banana'
[LINUX] ๐ ์ ์ถ๋ ฅ ์ฌ์ง์ & ํ์ดํ ๋ช ๋ น์ด ์ ๋ฆฌ
์ ์ถ๋ ฅ ์ฌ์ง์ ์ ์ถ๋ ฅ ์ฌ์ง์ ์ด๋, ์ผ๋ฐ์ ์ธ ์ ๋ ฅ, ์ถ๋ ฅ์ ์ฌ์ฉํ์ง ์๊ณ "ํ์ผ"๋ก ์ ์ถ๋ ฅ ํ๊ฒ ๋ค๋ ๋ง์ด๋ค. ๋ณธ๋ ํ์ค์ ๋ ฅ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํค๋ณด๋์์ ์ง์ ๋ฐ์์ค๊ณ , ํ์ค ์ถ๋ ฅ์ ๊ธฐ๋ณธ์ ์ผ๋ก
inpa.tistory.com
find + grep ์กฐํฉ ๋ช ๋ น์ด
find์ grep์ ์กฐํฉ์ ํน์ ํ์ผ์ด๋ ํด๋์์ ์๋ ๊ฒ์์ด๋ฅผ ์ถ๋ ฅํ ๋ ์ฌ์ฉ๋๋ค.
$ find . -name "์ฐพ๊ณ ์ถ์ ํ์ผ์ด๋ฆ" | xargs grep -n "์ฐพ๊ณ ์ถ์ ๊ธ์"
xargs ์๋ฏธ
ํ์ดํ ๋ค์์ ์ฐ์ด๋ xargs๋ ํ์ดํ๋ฅผ ํตํด ๋์ด์จ ๊ฒฐ๊ณผ๋ฌผ์ ๋ค์ ๋ช ๋ น์ด์ ๋งค๊ฐ๋ณ์๋ก ๋์ ธ์ฃผ๋ ์ญํ ์ ํ๋ค.
# rnn.txt ๋ผ๋ ํ์ผ๋ค์ findํ์ฌ ์ถ๋ ฅํ ๊ฒฐ๊ณผ๋ฅผ grep์ ๋งค๊ฐ๋ณ์ xarg๋ก์ ์คํ
# grep -n "ip" rnn.txt > rnn ํ์ผ ์์ ip ๋ผ๋ ๊ธ์๊ฐ ํฌํจ๋ ๊ฒ์ ์ฐพ๊ณ ์ถ์ ๋
$ find . -name "rnn.txt" | xargs grep -n "ip"
# ํน์ ํ์ผ์ด๋ ํด๋๋ฅผ ๊ฒ์ฌํด ํน์ ๊ฒ์์ด๊ฐ ์๋ ๋ถ๋ถ์ ์ถ๋ ฅ
$ find ./ -name '*.htm' | xargs grep -n 'hello'
[LINUX] ๐ find ๋ช ๋ น์ด ์ ๋ณตํ๊ธฐ [ํ์ผ ๊ฒ์]
ํ์ผ/๋๋ ํ ๋ฆฌ ๊ฒ์ find๋ ๋ฆฌ๋ ์ค์์ ํ์ผ ๋ฐ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฒ์ํ ๋ ์ฌ์ฉํ๋ ๋ช ๋ น์ด๋ค. $ find [๊ฒฝ๋ก] [์ต์ ] [ํํ์] $ find [PATH] [OPTION] [EXPRESSION] find ๋ช ๋ น์๋ ๋ช ๊ฐ์ง ์ต์ ๊ณผ ๋ง์ ์์ ํํ์.
inpa.tistory.com