OS/Linux

[LINUX] ๐Ÿ“š ์ •๊ทœํ‘œํ˜„์‹ ๊ณผ grep ๋ช…๋ น์–ด ์ •๋ณตํ•˜๊ธฐ [ํŒจํ„ด ๊ฒ€์ƒ‰] [ํ™•์žฅ๋ธŒ๋ž˜ํ‚ท]

์ธํŒŒ_ 2022. 2. 16. 21:41

๋ฆฌ๋ˆ…์Šค-์ •๊ทœ์‹-grep

ํŒŒ์ผ/๋””๋ ‰ํ† ๋ฆฌ ํŒจํ„ด ๊ฒ€์ƒ‰

๋ฆฌ๋ˆ…์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด ๋กœ๊ทธํŒŒ์ผ์ด๋‚˜, ํ…์ŠคํŠธ ํŒŒ์ผ์—์„œ ํŠน์ • ๋ฌธ์ž์—ด์„ ์ฐพ์„ ๋•Œ, ํ˜น์€ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋‚ด์—์„œ ํŠน์ • ๋ฌธ์ž๋ฅผ ํฌํ•จํ•˜๋Š” ํŒŒ์ผ์„ ์ฐพ์„ ๋•Œ์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธด๋‹ค.

 

๋ฐ”๋กœ ์ด๋–„ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด์ธ $ grep ์€ ์ž…๋ ฅ์œผ๋กœ ์ „๋‹ฌ๋œ ํŒŒ์ผ์˜ ๋‚ด์šฉ ํ˜น์€ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ,

ํŒŒ์ผ๋‚ด์šฉ์ด๋‚˜ ํŒŒ์ผ์ด๋ฆ„์˜ ํŠน์ • ๋ฌธ์ž์—ด ํŒจํ„ด์„ ์ฐพ๊ณ ์žํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด ์ด๋‹ค.

$ grep [์˜ต์…˜] [ํŒจํ„ด] [ํŒŒ์ผ๋ช…]
$ ๋‹ค๋ฅธ ๋ช…๋ น์–ด | grep [ํŒจํ„ด/ํŒŒ์ผ๋ช…] # ํŒŒ์ดํ”„์™€ ์—ฐ๊ฒฐํ•ด์„œ ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.
grep ์€ global / regular expression / printprint์—์„œ ๊ฐ๊ฐ์˜ ๋จธ๋ฆฟ๊ธ€์ž๋ฅผ ๋”ฐ ์˜จ ๊ฒƒ์ด๋ฉฐ, find์™€ ํ•จ๊ป˜ ๋ฆฌ๋ˆ…์Šค์—์„œ 
๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋ช…๋ น์–ด ์ค‘ ํ•˜๋‚˜์ด๋‹ค.
ํŠนํžˆ tail์ด๋‚˜ ls ๋“ฑ ๋‹ค์–‘ํ•œ ๋ช…๋ น์–ด์™€ ์กฐํ•ฉํ•˜์—ฌ ์‘์šฉ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„์„œ ์ด grep ๋ช…๋ น์–ด๋Š” ๋ฆฌ๋ˆ…์Šค์—์„œ ๋Šฅ์ˆ™ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ค„ ์•Œ์•„์•ผ ํ•˜๋Š” ๊ธฐ๋ณธ ๋ช…๋ น์–ด ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

๋ฆฌ๋ˆ…์Šค ์ •๊ทœํ‘œํ˜„์‹

grep ๋ช…๋ น์–ด๋Š” ์ •๊ทœํ‘œํ˜„์‹ ๊ณผ ์กฐํ•ฉํ•ด์„œ ํŒจํ„ด ๋งค์นญ์œผ๋กœ ์ž์ฃผ ์“ฐ์ด๋Š” ํŽธ์ด๋‹ค.

 

์ •๊ทœ ํ‘œํ˜„์‹(Regular Expression)์ด๋ž€, ํŠน์ • ๊ทœ์น™์„ ๊ฐ€์ง„ ๋ฌธ์ž์—ด ์ง‘ํ•ฉ์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ํ˜•์‹ ์–ธ์–ด๋กœ์จ, ์ฃผ๋กœ ๋ฌธ์ž์—ด ํŒจํ„ด ๋งค์นญ์„ ๊ฒ€์‚ฌํ•˜๊ฑฐ๋‚˜ ๋˜๋Š” ๋ฌธ์ž์—ด์„ ์น˜ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ๋ฒ•์ด๋‹ค.

 

๋ฌธ์ž์—ด ๊ฒ€์ƒ‰์— ์ •๊ทœ ํ‘œํ˜„์‹์„ ์ ์šฉํ•˜๊ฒŒ ๋˜๋ฉด,

์ง€์ •๋œ ๋ฌธ์ž์—ด์˜ ๋ฌธ์ž๊ฐ€ ๋‹จ์ˆœํžˆ "๊ฐ™์€์ง€(equal)" ์—ฌ๋ถ€๊ฐ€ ๊ฒ€์‚ฌ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ,

์ •๊ทœ ํ‘œํ˜„์‹์˜ ๊ทœ์น™์— ๋งค์นญ(Matching)๋˜๋Š”์ง€ ์—ฌ๋ถ€๊ฐ€ ๊ฒ€์‚ฌ๋˜๊ฒŒ ๋œ๋‹ค.

grep

๋˜ํ•œ ๊ฐ ์–ธ์–ด๋งˆ๋‹ค ์ •๊ทœ์‹ ๋ฌธ๋ฒ•์ด ์•„์ฃผ ์•ฝ๊ฐ„ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

๋ฆฌ๋ˆ…์Šค๋„ ๋ฆฌ๋ˆ…์Šค๋งŒ์˜ ๋ฉ”ํƒ€ ๋ฌธ์ž๊ฐ€ ์กด์žฌํ•œ๋‹ค.

๋ฉ”ํƒ€ ๋ฌธ์ž : ํŠน์ • ๋ฌธ์ž์˜ ํŒจํ„ด์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๊ทœ์น™ ๋ฌธ๋ฒ•
๋ฉ”ํƒ€๋ฌธ์ž ์˜   ๋ฏธ ์˜ˆ   ์‹œ ์„ค   ๋ช…
^ ํ–‰์˜ ์‹œ์ž‘ $ 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

# ํŒŒ์ผ๋‚ด์šฉ ์ค‘ ๋Œ€๋ฌธ์ž๊ฐ€ ๋“ค์–ด๊ฐ„ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰
$ grep "^[[:upper:]]" ํŒŒ์ผ๋ช…

๋ฆฌ๋ˆ…์Šค-์ •๊ทœ์‹-grep

 

 

Vim์—์„œ ์ •๊ทœ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•œ ๊ฒ€์ƒ‰

vim์—์„œ ESCํ‚ค๋ฅผ ๋ˆ„๋ฅด๊ณ  /๊ฒ€์ƒ‰ํ•  ๋ฌธ์ž์—ด ํ˜•ํƒœ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์—”ํ„ฐ๋ฅผ ๋ˆ„๋ฅด๋ฉด ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ

/์—†์ด$ # ์—†์ด๋กœ ๋๋‚˜๋Š” ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰

/...์„ธ # 4๊ฐœ ๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด ์ค‘ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๊ฐ€ “์„ธ”๋กœ ๋๋‚˜๋Š” ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰

/o*ve # o๋กœ ์‹œ์ž‘๋˜๋Š” ๋ฌธ์ž๋ถ€ํ„ฐ ve๋กœ ๋๋‚˜๋Š” ๋ชจ๋“  ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰

/[Ll]ove # Love, love

cat
cat


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" *

๋ฆฌ๋ˆ…์Šค-์ •๊ทœ์‹-grep

# "step0", "step1", ..., "step9" ํŒจํ„ด์„ ๊ฒ€์ƒ‰.
$ grep "step[0-9]" *

๋ฆฌ๋ˆ…์Šค-์ •๊ทœ์‹-grep

# "[0-9]" ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰.
grep "[0-9]" *

๋ฆฌ๋ˆ…์Šค-์ •๊ทœ์‹-grep

#FILE.txt ํŒŒ์ผ์—์„œ * ๋ฌธ์ž ๊ฒ€์ƒ‰.
$ grep "\*" FILE.txt           

#FILE.txt ํŒŒ์ผ์—์„œ . ๋ฌธ์ž ๊ฒ€์ƒ‰.
$ grep "\." FILE.txt

๋ฆฌ๋ˆ…์Šค-์ •๊ทœ์‹-grep

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

 

ํŠน์ • ๋‚ ์งœ์˜ ๋ชจ๋“  ๋กœ๊ทธ ํŒŒ์ผ๋“ค ์ค‘์—์„œ 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