๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Linux

[Linux] ์ •๊ทœํ‘œํ˜„์‹๊ณผ ํ…์ŠคํŠธ ๊ณ ๋„ํ™” ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ sed, awk ๋ช…๋ น์–ด

๋ฐ˜์‘ํ˜•

๐Ÿ”Š ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ๋ชจ๋‘์˜ ๋ฆฌ๋ˆ…์Šค ์„œ์ ์˜ ๋‚ด์šฉ์„ ์ฝ๊ณ  ๊ฐœ์ธ์ ์ธ ์ •๋ฆฌ ๋ชฉ์  ํ•˜์— ์ž‘์„ฑ๋œ ๊ธ€์ž„์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค. ํฌ์ŠคํŒ… ๋‚ด์šฉ์˜ ๊ธฐ๋ฐ˜ ๋‚ด์šฉ์€ ํ•ด๋‹น ์„œ์ ์— ๊ธฐ๋ฐ˜ํ•˜์˜€์œผ๋ฉฐ ๋‚ด์šฉ ์ž์ฒด๋Š” ์ œ๊ฐ€ ์ง์ ‘ ์žฌ๊ตฌ์„ฑํ–ˆ์Œ์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค.

 

๋ฆฌ๋ˆ…์Šค ํ„ฐ๋ฏธ๋„ ํ™”๋ฉด


์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ํ…์ŠคํŠธ ์ฒ˜๋ฆฌ๋ฅผ ๊ณ ๋„ํ™”ํ•˜๋Š” ๋ฐ ํ•ต์‹ฌ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” ์ •๊ทœํ‘œํ˜„์‹, ๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ํ™œ์šฉํ•ด ๋ฆฌ๋ˆ…์Šค์—์„œ ํ…์ŠคํŠธ๋ฅผ ๊ณ ๋„ํ™”ํ•ด์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค.

1. ์ •๊ทœ ํ‘œํ˜„์‹

๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” ์ˆ˜๋งŽ์€ ๊ฒƒ๋“ค์ด ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ๋ฌธ์ž์—ด ํŒจํ„ด์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ํ•„์ˆ˜์ ์ด๋‹ค. ๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” grep ์ด๋ผ๋Š” ๋ช…๋ น์–ด๋กœ ๋ฌธ์ž์—ด์„ ๊ฒ€์ƒ‰ํ•˜๋ฉฐ ๋˜ ์ •๊ทœํ‘œํ˜„์‹๊นŒ์ง€ ๊ฐ™์ด ํ™œ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ณต์žกํ•œ ํŒจํ„ด์˜ ๋ฌธ์ž์—ด๋„ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋จผ์ € grep ๋ช…๋ น์–ด์˜ ํ™œ์šฉ ๋ฐฉ์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ์ธ์ž๋กœ ์ง€์ •ํ•œ ํŒŒ์ผ ์†์—์„œ [๊ฒ€์ƒ‰ ํŒจํ„ด]์— ๋งŒ์กฑํ•˜๋Š” ํ–‰(row)์˜ ์ „์ฒด๋ฅผ ์ถœ๋ ฅํ•ด์ค€๋‹ค.

 

grep [์˜ต์…˜] [๊ฒ€์ƒ‰ ํŒจํ„ด] [ํŒŒ์ผ ์ด๋ฆ„]

 

grep ๋ช…๋ น์–ด [์˜ต์…˜] ์ข…๋ฅ˜ ์˜๋ฏธ
-n ํ–‰ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅ. ์ฃผ๋กœ ํŒŒ์ผ์—์„œ ๊ฒ€์ƒ‰ํ•œ ๋ฌธ์ž์—ด์˜ ์œ„์น˜๋ฅผ ํŒŒ์•…ํ•  ๋•Œ ์‚ฌ์šฉ
-i ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ณ„ํ•˜์ง€ ์•Š๊ณ  ๊ฒ€์ƒ‰ํ•  ๋•Œ ์‚ฌ์šฉ
-v ๊ฒ€์ƒ‰ํ•  ๋ฌธ์ž์—ด์ด ๋‚˜ํƒ€๋‚˜์ง€ '์•Š๋Š”' ํ–‰์„ ์ถœ๋ ฅ. ์ฃผ๋กœ ๋ถˆํ•„์š”ํ•œ ๋ฌธ์ž์—ด์„ ์ธ์ž๋กœ ๋„ฃ์–ด์„œ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋งŽ์ด ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž์—ด์„ ํฌํ•จ์‹œํ‚ค๊ณ  ์‹ถ์ง€ ์•Š์„ ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ
-q quiet ๋ชจ๋“œ๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜์ง€ ์•Š์Œ
-H ์ง€์ •ํ•œ ํŒŒ์ผ์ด ํ•˜๋‚˜์ผ ๋•Œ๋„ ํŒŒ์ผ์ด๋ฆ„์„ ํ•จ๊ป˜ ์ถœ๋ ฅ

 

๋‹ค์Œ์€ ์ •๊ทœ ํ‘œํ˜„์‹์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ์ •๊ทœ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ์กฐ๊ฑด์— ์ผ์ง€ํ•˜๋Š” ๋ฌธ์ž์—ด์˜ ์ง‘ํ•ฉ์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฐธ๊ณ ๋กœ ์ •๊ทœ ํ‘œํ˜„์‹์„ ํ‘œ์‹œํ•  ๋•Œ๋Š” ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ธ์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋”ฐ์˜ดํ‘œ๊ฐ€ ์—†์œผ๋ฉด ์…ธ์ด ์ •๊ทœ ํ‘œํ˜„์‹์„ ๊ฒฝ๋กœ ํ™•์žฅํ•˜์—ฌ ์ธ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ •๊ทœ ํ‘œํ˜„์‹์˜ ๋ฉ”ํƒ€ ๋ฌธ์ž ์ข…๋ฅ˜์™€ ์˜๋ฏธ์— ๋Œ€ํ•ด ํ‘œ๋กœ ์•Œ์•„๋ณด์ž.

 

์ข…๋ฅ˜ ๋ฉ”ํƒ€๋ฌธ์ž ์˜๋ฏธ
์ž„์˜์˜ ๋ฌธ์ž๋ฅผ ์ง€์ •ํ•˜๋Š”
๋ฉ”ํƒ€ ๋ฌธ์ž
. ์ž„์˜์˜ ๋ฌธ์ž ํ•˜๋‚˜๋ฅผ ์˜๋ฏธ(์•ŒํŒŒ๋ฒณ, ์ˆซ์ž, ๊ธฐํ˜ธ๋„ ํฌํ•จ). ๋งŒ์•ฝ ๋ฌธ์ž์—ด . ์ž์ฒด๋ฅผ ํฌํ•จ์‹œํ‚ค๋ ค๋ฉด ์ด์Šค์ผ€์ดํ”„(\)๋ฌธ์ž๋ฅผ ์•ž์— ๋ถ™์—ฌ์ค˜์•ผ ํ•จ
ex) grep 't.st' test.txt : test.txt ํŒŒ์ผ ๋‚ด์šฉ ์ค‘์— t ์™€ st ์‚ฌ์ด์— ์ž„์˜์˜ ๋ฌธ์ž ํ•˜๋‚˜๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ํ–‰ ์ „์ฒด๋ฅผ ์ถœ๋ ฅ
ex) grep 't..st' test.txt : test.txt ํŒŒ์ผ ๋‚ด์šฉ ์ค‘์— t ์™€ st ์‚ฌ์ด์— ์ž„์˜์˜ ๋ฌธ์ž 2๊ฐœ๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ํ–‰ ์ „์ฒด๋ฅผ ์ถœ๋ ฅ
[๋ฌธ์ž] []์•ˆ์— ํฌํ•จ๋œ ์ž„์˜์˜ ๋ฌธ์ž ํ•˜๋‚˜(๋…ผ๋ฆฌ์—ฐ์‚ฐ or ๊ฐ™์€ ๊ฐœ๋…)
ex) gerp 't[ef]st' test.txt : test.txt ํŒŒ์ผ ๋‚ด์šฉ ์ค‘์— t ์™€ st ์‚ฌ์ด์— e ๋˜๋Š” f ๋ผ๋Š” ๋ฌธ์ž๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•œ ๊ฐœ๋งŒ ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ํ–‰ ์ „์ฒด๋ฅผ ์ถœ๋ ฅ(์˜ˆ๋ฅผ ๋“ค์–ด, e๊ฐ€ 2๊ฐœ, f๊ฐ€ 2๊ฐœ e,f ๊ฐ๊ฐ 1๊ฐœ ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ œ์™ธ๋จ์— ์ฃผ์˜)
์ฐธ๊ณ ๋กœ, ์•ŒํŒŒ๋ฒณ a๋ถ€ํ„ฐ k๊นŒ์ง€ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ [a-k] ๋กœ ์ง€์ • ๊ฐ€๋Šฅ. ์ˆซ์ž๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ [1-4] ์ฒ˜๋Ÿผ ๊ฐ€๋Šฅ
[^๋ฌธ์ž] []์•ˆ์— ํฌํ•จ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ž

์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๋Š” 
๋ฉ”ํƒ€ ๋ฌธ์ž
^๋ฌธ์ž ํ–‰์˜ ์ฒซ ๋ถ€๋ถ„ ์ฆ‰, ํŠน์ • ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ํ–‰๋งŒ ๊ฒ€์ƒ‰
ex) grep '^net' test.txt : test.txt ํŒŒ์ผ ๋‚ด์šฉ ์ค‘์— net ์ด๋ผ๋Š” ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ํ–‰ ์ „์ฒด๋ฅผ ๋ชจ๋‘ ์ถœ๋ ฅ
๋ฌธ์ž$ ํ–‰์˜ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„ ์ฆ‰, ํŠน์ • ๋ฌธ์ž๋กœ ๋๋‚˜๋Š” ํ–‰๋งŒ ๊ฒ€์ƒ‰
ex) grep 'net$' test.txt : test.txt ํŒŒ์ผ ๋‚ด์šฉ ์ค‘์— net ์ด๋ผ๋Š” ๋ฌธ์ž๋กœ ๋๋‚˜๋Š” ํ–‰ ์ „์ฒด๋ฅผ ๋ชจ๋‘ ์ถœ๋ ฅ
^$๋ฅผ ํ•จ๊ป˜์‚ฌ์šฉ ^$ ๋งŒ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋นˆ ํ–‰์„ ์˜๋ฏธ
๋ฐ˜๋ณต์„ ์ง€์ •ํ•˜๋Š” 
๋ฉ”ํƒ€ ๋ฌธ์ž
(ํ•ญ์ƒ ๋‹ค๋ฅธ ์ •๊ทœํ‘œํ˜„์‹ ๋’ค์—์„œ ์‚ฌ์šฉ๋จ. ๊ทธ๋ž˜์„œ ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉ ๋ถˆ๊ฐ€)
* ์ง์ „ ์•ž์˜ ํŠน์ • ๋ฌธ์ž 0ํšŒ ์ด์ƒ ๋ฐ˜๋ณต๋˜๋Š” ํ–‰ ์ „์ฒด๋ฅผ ๋ชจ๋‘ ์ถœ๋ ฅ. 0ํšŒ ์ด์ƒ = ํ•ด๋‹น ๋ฌธ์ž๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์€ ๊ฒƒ ์˜๋ฏธ
ex) grep 'Be*r' test.txt : test.txt ํŒŒ์ผ ๋‚ด์šฉ ์ค‘์— 'B๋กœ ์‹œ์ž‘ํ•˜๊ณ  r๋กœ ๋๋‚˜๋Š” ๋ฌธ์ž์—ด์ด๋˜ ๊ฐ€์šด๋ฐ e ๋ผ๋Š” ๋ฌธ์ž์—ด์ด 0ํšŒ ์ด์ƒ ๋ฐ˜๋ณต๋˜๋Š” ๋ชจ๋“  ํ–‰์„ ์ถœ๋ ฅ

๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ๋ฉ”ํƒ€๋ฌธ์ž ๋’ค์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
ex) grep '[ea]*r' test.txt : test.txt ํŒŒ์ผ ๋‚ด์šฉ ์ค‘์— r๋กœ ๋๋‚˜๋Š” ๋ฌธ์ž์—ด์ด๋˜ e ๋˜๋Š” r ๋ฌธ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ˜๋“œ์‹œ 0ํšŒ ์ด์ƒ ๋‚˜ํƒ€๋‚˜๋Š” ๋ชจ๋“  ํ–‰์„ ์ถœ๋ ฅ. ์ฐธ๊ณ ๋กœ ์ด ๋•Œ๋Š” * ๋ฉ”ํƒ€๋ฌธ์ž ๋•๋ถ„์— e ์™€ r ๋ฌธ์ž์—ด ๋‘˜๋‹ค ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ, e๊ฐ€ 2๊ฐœ ์ด์ƒ, r์ด 2๊ฐœ ์ด์ƒ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ๋„ ํฌํ•จ๋จ
ex) grep '.*' test.txt : test.txt ํŒŒ์ผ ๋‚ด์šฉ์˜ ๋ชจ๋“  ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅ

 

์ง€๊ธˆ๊นŒ์ง€ ์œ„ ํ‘œ์—์„œ ์‚ดํŽด๋ณธ ๊ฒƒ์€ ๊ธฐ๋ณธ ์ •๊ทœ ํ‘œํ˜„์‹์ด๋‹ค. ์ด ํ‘œํ˜„์‹๋“ค์€ ์ •๊ทœ ํ‘œํ˜„์‹์„ ์ง€์›ํ•˜๋Š” ๋ชจ๋“  ๋ช…๋ น์–ด์—์„œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”ํƒ€ ๋ฌธ์ž๊ฐ€ ๋Š˜์–ด๋‚œ ํ™•์žฅ ์ •๊ทœ ํ‘œํ˜„์‹๋„ ์กด์žฌํ•œ๋‹ค. ์ฃผ์˜ํ•  ์ ์€ ํ™•์žฅ ์ •๊ทœ ํ‘œํ˜„์‹์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ช…๋ น์–ด๋„ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋‘˜์„ ๊ตฌ๋ถ„ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์ฐธ๊ณ ๋กœ grep ๋ช…๋ น์–ด๋Š” ์˜ต์…˜์„ ๋”ฐ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ธ์ž๋กœ ์ง€์ •ํ•œ ์ •๊ทœ ํ‘œํ˜„์‹์„ ๊ธฐ๋ณธ ์ •๊ทœ ํ‘œํ˜„์‹์œผ๋กœ ํ•ด์„์„ ํ•˜๊ฒŒ ๋œ๋‹ค. ๋งŒ์•ฝ ํ™•์žฅ ์ •๊ทœ ํ‘œํ˜„์‹์œผ๋กœ ํ•ด์„ํ•˜๋„๋ก ํ•˜๋ ค๋ฉด grep ๋ช…๋ น์–ด ์˜ต์…˜์— -E ์ธ์ž๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

 

์ฐธ๊ณ ๋กœ ์•Œ์•„๋‘๋ฉด ์ข‹์„ ์ ์€ ๋ฆฌ๋ˆ…์Šค์˜ GNU grep ์ด๋ผ๋Š” ๋ช…๋ น์–ด๋Š” -E ์˜ต์…˜์„ ๋ถ™์ด์ง€ ์•Š์•„๋„ ๋ฉ”ํƒ€ ๋ฌธ์ž ์•ž์— \๋ฅผ ๋ถ™์—ฌ์„œ ํ™•์žฅ ์ •๊ทœ ํ‘œํ˜„์‹์˜ ์ผ๋ถ€๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•˜์ง€๋งŒ GNU grep ์ด๋ผ๋Š” ๋ช…๋ น์–ด์— ํ•œํ•ด์„œ๋งŒ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ €์ž๋Š” ์ด๋ ‡๊ฒŒ๊นŒ์ง€ ํ•ด์„œ ์ •๊ทœ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด์ œ ํ™•์žฅ ์ •๊ทœ ํ‘œํ˜„์‹์˜ ๋ฉ”ํƒ€ ๋ฌธ์ž์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.

 

์ข…๋ฅ˜ ๋ฉ”ํƒ€๋ฌธ์ž ์˜๋ฏธ
๋ฐ˜๋ณต์„ ์ง€์ •ํ•˜๋Š” 
๋ฉ”ํƒ€ ๋ฌธ์ž
+ ์ง์ „ ๋ฌธ์ž๊ฐ€ 1ํšŒ ์ด์ƒ ๋ฐ˜๋ณต๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ
ex) grep -E 'Be+r' test.txt : test.txt ํŒŒ์ผ ๋‚ด์šฉ ์ค‘์— Be ๋ผ๋Š” ๋ฌธ์ž์—ด์ด 1ํšŒ ์ด์ƒ ๋ฐ˜๋ณต๋˜๋Š” ํ–‰๋“ค๋งŒ ๋ชจ๋‘ ์ถœ๋ ฅ
? ์ง์ „ ๋ฌธ์ž๊ฐ€ 0ํšŒ ํ˜น์€ 1ํšŒ ๋ฐ˜๋ณต๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ
๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋Š”
๋ฉ”ํƒ€ ๋ฌธ์ž( {} ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉ)
(ํ™•์žฅ ์ •๊ทœ ํ‘œํ˜„์‹ ๊ธฐ์ค€์ž„)
{m, n} ์ง์ „ ๋ฌธ์ž๊ฐ€ mํšŒ ์ด์ƒ nํšŒ ์ดํ•˜ ๋ฐ˜๋ณต์„ ์˜๋ฏธ
ex) grep -E 'Be{1,2}r' test.txt : test.txt ํŒŒ์ผ ๋‚ด์šฉ ์ค‘์— Be ๋ผ๋Š” ๋ฌธ์ž๊ฐ€ 1ํšŒ ์ด์ƒ 2ํšŒ ์ดํ•˜ ๋ฐ˜๋ณต๋˜๋Š” ํ–‰๋“ค๋งŒ ๋ชจ๋‘ ์ถœ๋ ฅ
{m} ์ง์ „ ๋ฌธ์ž๊ฐ€ m๋ฒˆ ๋ฐ˜๋ณต๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ
{m,} ์ง์ „ ๋ฌธ์ž๊ฐ€ mํšŒ ์ด์ƒ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ
๊ทธ ์™ธ์˜ ๋ฉ”ํƒ€ ๋ฌธ์ž
(ํ™•์žฅ ์ •๊ทœ ํ‘œํ˜„์‹ ๊ธฐ์ค€์ž„)
() ์ •๊ทœ ํ‘œํ˜„์‹์„ ๊ทธ๋ฃนํ™”ํ•  ๋•Œ ์‚ฌ์šฉ
ex) Be ๋ผ๋Š” ๋‘ ๊ธ€์ž๊ฐ€ 2ํšŒ ์ด์ƒ ๋ฐ˜๋ณตํ•ด์„œ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ, Be{2,}๊ฐ€ ์•„๋‹Œ (Be){2,} ๋ผ๊ณ  ์ง€์ •ํ•ด์•ผ ํ•จ
๋ณต์ˆ˜์˜ ์ •๊ทœ ํ‘œํ˜„์‹์„ OR ์กฐ๊ฑด์œผ๋กœ ์—ฐ๊ฒฐํ•  ๋•Œ ์‚ฌ์šฉ
ex) abc | xyz | def ๋Š” abc ํ˜น์€ xyz ํ˜น์€ def ๋ผ๋Š” ๋ฌธ์ž ์ค‘ ํ•˜๋‚˜์— ํ•ด๋‹น. ๊ทธ๋ž˜์„œ ๋ณดํ†ต ๊ทธ๋ฃนํ™” ๋ฉ”ํƒ€ ๋ฌธ์ž์ธ ()์™€ ๊ฐ™์ด ์ž์ฃผ ์‚ฌ์šฉ
grep -E '(Best|Black)' test.txt : test.txt ํŒŒ์ผ ๋‚ด์šฉ ์ค‘์— Best ํ˜น์€ Black ์ด๋ผ๋Š” ๋ฌธ์ž๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ํ–‰์„ ์ถœ๋ ฅ

 

์ง€๊ธˆ๊นŒ์ง€ ์ •๊ทœ ํ‘œํ˜„์‹์„ ๋ฐฐ์šฐ๋ฉด์„œ ์˜ˆ์‹œ๋ฅผ grep ์ด๋ผ๋Š” ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ, ์ •๊ทœ ํ‘œํ˜„์‹์€ Vim ์ด๋‚˜ less ๋ช…๋ น์–ด์—์„œ๋„ /(์Šฌ๋ž˜์‰ฌ)๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋ฌธ์ž ํŒจํ„ด์ด ๋“ค์–ด์žˆ๋Š” ๋‚ด์šฉ๋“ค์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Python, Java ๋“ฑ๊ณผ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์ •๊ทœ ํ‘œํ˜„์‹ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ํ™œ์šฉ๋˜๋Š” ์ •๊ทœ ํ‘œํ˜„์‹๋„ ์ด์™€ ๋™์ผํ•˜๋‹ค. 

 

๋‹ค์Œ ๋ชฉ์ฐจ๋ถ€ํ„ฐ๋Š” ํ…์ŠคํŠธ์˜ ์ผ๋ถ€๋ฅผ ์ง€์šฐ๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•œ ์ฆ‰, ํ…์ŠคํŠธ์˜ ๊ณ ๋„ํ™” ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ sed, awk ๋ช…๋ น์–ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

2. ์ฃผ๋กœ ๋ฌธ์ž์—ด์„ ์น˜ํ™˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” sed(Stream Editor) ๋ช…๋ น์–ด

sed ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ ์ „์— sed์˜ ๋‚ด๋ถ€๋™์ž‘์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด์ž. sed๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์—๋””ํ„ฐ๋กœ '๋น„๋Œ€ํ™”ํ˜•' ์—๋””ํ„ฐ์ด๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ผ์ƒ์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ์žฅ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ์‚ฌ์ด์–ธ์Šค์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ, ํ„ฐ๋ฏธ๋„์„ ์ผœ์„œ python ์ด๋ผ๋Š” ๋ช…๋ น์–ด๋ฅผ ์น˜๋ฉด ๋‚˜์˜ค๋Š” ์—๋””ํ„ฐ, ๋ฆฌ๋ˆ…์Šค์˜ Vim ๊ฐ™์€ ๊ฒƒ๋“ค์€ ๋ชจ๋‘ ๋Œ€ํ™”ํ˜• ์—๋””ํ„ฐ์ด๋‹ค. ๋Œ€ํ™”ํ˜• ์—๋””ํ„ฐ๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ ํŒŒ์ผ์„ ์—ด์–ด ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ํŽธ์ง‘ํ•˜๊ณ  ์ ์ ˆํ•œ ์‹œ์ ์— ์ €์žฅํ•˜๋Š” ํ˜•ํƒœ๋กœ ํŒŒ์ผ์„ ํŽธ์ง‘ํ•œ๋‹ค. ๋‹ค์‹œ ๋งํ•ด, ํŽธ์ง‘ํ•˜๋Š” ๊ณผ์ •์ผ ์‚ฌ๋žŒ ๋ˆˆ์— ๋ณด์—ฌ์ง€๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

 

๋Œ€ํ™”ํ˜• ์—๋””ํ„ฐ์˜ ํŽธ์ง‘ ๊ณผ์ •์€ ์‚ฌ๋žŒ ๋ˆˆ์— ๋ณด์ธ๋‹ค!

 

sed ๋ผ๋Š” ๋น„๋Œ€ํ™”ํ˜• ์—๋””ํ„ฐ์˜ ๋™์ž‘ ๊ณผ์ •์„ ๋‹จ๊ณ„ํ™”ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

  1. ์…ธ์—์„œ ํŽธ์ง‘ ๋‚ด์šฉ์„ ์ธ์ž๋กœ ์ง€์ •ํ•˜์—ฌ sed ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰
  2. sed๊ฐ€ ํŽธ์ง‘์„ ์ˆ˜ํ–‰
  3. ํŽธ์ง‘์ด ์™„๋ฃŒ๋œ ๋‚ด์šฉ์„ ํ‘œ์ค€ ์ถœ๋ ฅ์œผ๋กœ ์ถœ๋ ฅ

์œ„์™€ ๊ฐ™์ด ๋™์ž‘ํ•˜๋Š” ๋น„๋Œ€ํ™”ํ˜• ์—๋””ํ„ฐ๋Š” ๋Œ€ํ™”ํ˜• ์—๋””ํ„ฐ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ํŽธ์ง‘ ๊ณผ์ •์ด ์‚ฌ๋žŒ ๋ˆˆ์— ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด ํŠน์ง•์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  sed๋Š” ํŽธ์ง‘ํ•œ ๋‚ด์šฉ์„ ํ‘œ์ค€ ์ถœ๋ ฅ์œผ๋กœ ์ถœ๋ ฅ๋งŒ ํ•˜๊ณ  ์›๋ž˜ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ๋ฐ”๊พธ์ง€๋Š” ์•Š๋Š”๋‹ค. ๊ทธ๋ž˜์„œ ๋ฌด์•„์ง€๊ฒฝ(?)์œผ๋กœ ์—ฌ๋Ÿฌ๋ฒˆ ํ…Œ์ŠคํŠธ ํ•ด๋ณผ ์ˆ˜ ์žˆ์–ด ์•ˆ์ •์ ์ด๋‹ค. ๋ฌผ๋ก  ํ‘œ์ค€ ์ถœ๋ ฅ ๋‚ด์šฉ์„ ์ €์žฅํ•˜๋ ค๋ฉด ๋ฆฌ๋‹ค์ด๋ ‰์…˜์„ ํ™œ์šฉํ•˜๋ฉด ๋œ๋‹ค. ๋˜ํ•œ sed ๋ช…๋ น์–ด๋„ ํ•„ํ„ฐ ๋ช…๋ น์–ด์ด๊ธฐ ๋•Œ๋ฌธ์— ํŒŒ์ผ ์ด๋ฆ„์„ ์ธ์ž๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ํ‘œ์ค€ ์ž…๋ ฅ์„ ์ฝ๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ํŒŒ์ดํ”„๋ผ์ธ์„ ํ™œ์šฉํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค. sed ๋ผ๋Š” ๋น„๋Œ€ํ™”ํ˜• ์—๋””ํ„ฐ์˜ ํŽธ์ง‘ ํ›„ ์ถœ๋ ฅ ๊ณผ์ •์„ ๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

๋น„๋Œ€ํ™”ํ˜• ์—๋””ํ„ฐ ํŽธ์ง‘ ๊ณผ์ •

 

์ด์ œ sed ๋ช…๋ น์–ด์˜ ํ˜•์‹์„ ์‚ดํŽด๋ณด์ž.

 

sed [์˜ต์…˜] <์Šคํฌ๋ฆฝํŠธ> <๋Œ€์ƒ ํŒŒ์ผ>

 

์—ฌ๊ธฐ์„œ <์Šคํฌ๋ฆฝํŠธ>๋ž€, ์ฃผ์†Œ์™€ ๋ช…๋ น์–ด๋ฅผ ์กฐํ•ฉํ•œ ๋ฌธ์ž์—ด์ด๋‹ค. ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ํ–‰์— ๋Œ€ํ•ด ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ช…๋ น์–ด์—๋Š” ์ธ์ž๋‚˜ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž˜ ์ดํ•ด๊ฐ€ ์•ˆ๊ฐ„๋‹ค๋ฉด ์•„๋ž˜ ๊ทธ๋ฆผ์„ ํ†ตํ•ด ์ดํ•ดํ•˜์ž.

 

์ฃผ์†Œ, ๋ช…๋ น์–ด, ์ธ์ž, ํ”Œ๋ž˜๊ทธ๋Š” ์Šคํฌ๋ฆฝํŠธ ๋‚ด์— ๋ชจ๋‘ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค

 

๊ฐ€์žฅ ๋จผ์ € ์•Œ์•„๋ณผ ๊ฒƒ์€ ์œ„ ๊ทธ๋ฆผ์˜ ์Šคํฌ๋ฆฝํŠธ ๋‚ด์—์„œ '๋ช…๋ น์–ด'์™€ ๊ด€๋ จํ•œ ๊ฒƒ์ด๋‹ค. sed์—๋Š” ๋งŽ์€ ๋ช…๋ น์–ด๊ฐ€ ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ์„œ๋Š” 3๊ฐ€์ง€๋งŒ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž.

2-1. ํ–‰์„ ์ง€์šฐ๋Š” d ๋ช…๋ น์–ด

d๋Š” ํ–‰์„ ์‚ญ์ œํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค. sed ๋ช…๋ น์–ด๋Š” ์ฃผ์†Œ๋กœ ์ง€์ •ํ•œ ํ–‰์— ๋Œ€ํ•ด์„œ๋งŒ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ ๋จผ์ € ํ–‰ ๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ถ€ํ„ฐ ์•Œ์•„๋ณด์ž. ๋‹ค์Œ ๋ช…๋ น์–ด๋Š” 1๋ฒˆ์งธ ํ–‰์„ ์ง€์šฐ๋Š” ๊ฒƒ์„ sed ๋ช…๋ น์–ด๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

sed 1d sample.txt

 

๋˜ํ•œ ์ •๊ทœ ํ‘œํ˜„์‹์—์„œ ๋ฐฐ์› ๋˜ ๊ฒƒ๊ณผ ๋น„์Šทํ•œ ๊ฒƒ์ฒ˜๋Ÿผ n, m ํ˜•ํƒœ๋กœ nํ–‰์—์„œ mํ–‰๊นŒ์ง€์˜ ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๋‹ค์Œ ์˜ˆ์‹œ๋Š” 2ํ–‰์—์„œ 5ํ–‰๊นŒ์ง€ ์ง€์ •ํ•ด ์‚ญ์ œํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

 

sed 2,5d sample.txt

 

๊ทธ๋ฆฌ๊ณ  $๋Š” ๋งˆ์ง€๋ง‰ ํ–‰์„ ์˜๋ฏธํ•œ๋‹ค. ๊ทธ๋ž˜์„œ 3๋ฒˆ์งธ ํ–‰๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ํ–‰๊นŒ์ง€ ์‚ญ์ œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

 

sed '3,$d' sample.txt

 

์ฐธ๊ณ ๋กœ $๋ผ๋Š” ๋ฌธ์ž๋ฅผ ์…ธ์—์„œ ๋”ฐ๋กœ ํ•ด์„ํ•˜์ง€ ์•Š๋„๋ก ์ž‘์€ ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ธ์ฃผ์—ˆ๋‹ค๋Š” ์ ๋„ ์žŠ์ง€๋ง์ž.

 

๋งˆ์ง€๋ง‰์œผ๋กœ ์ฃผ์†Œ ์ง€์ •์„ ์ •๊ทœํ‘œํ˜„์‹์„ ํ™œ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ด ๋•Œ ์ •๊ทœ ํ‘œํ˜„์‹์€ ์Šฌ๋ž˜์‰ฌ(/)๋กœ ๊ฐ์‹ธ์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, B๋กœ ์‹œ์ž‘ํ•˜๋Š” ํ–‰์„ ์‚ญ์ œํ•˜๋Š” ์ฃผ์†Œ๋กœ ์ง€์ •ํ•˜๋ ค๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.

 

sed /^B/d sample.txt

2-2. ํ–‰์„ ์ถœ๋ ฅํ•˜๋Š” p ๋ช…๋ น์–ด

๋‹ค์Œ์€ ํŠน์ • ํ–‰์„ ์ถœ๋ ฅํ•˜๋Š” p ๋ช…๋ น์–ด์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์•„๋ž˜์™€ ๊ฐ™์€ ํ…์ŠคํŠธ ๋‚ด์šฉ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด๋ณด์ž.

 

grep.txt์˜ ๋‚ด์šฉ

 

sed 1p grep.txt

 

์œ„ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•œ ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ๊ทผ๋ฐ ๋ญ”๊ฐ€ ์ด์ƒํ•œ ์ ์ด ์žˆ๋‹ค.

 

grep.txt. ๋‚ด์šฉ์ด ๋ฐ‘์— ์ถœ๋ ฅ๋˜์—ˆ๋‹ค

 

๋ช…๋ น์–ด๋Š” 1๋ฒˆ์งธ ํ–‰๋งŒ ์ถœ๋ ฅํ•˜๋ผ๋Š” ๋ช…๋ น์–ด์˜€๋‹ค. ๊ทธ๋ž˜์„œ ํ‘œ์ค€ ์ถœ๋ ฅ์˜ 1๋ฒˆ์งธ ์ค„์— 'Ber'์ด ๋‚˜์˜จ๊ฒƒ์€ ์ดํ•ด๊ฐ€ ๋˜๋Š”๋ฐ, ๊ฐ‘์ž๊ธฐ ๋ฐ‘์— ํŒŒ์ผ ๋‚ด์šฉ ์ „์ฒด๊ฐ€ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ถœ๋ ฅ๋˜์—ˆ๋‹ค. ๋Œ€์ฒด ์ด์œ ๊ฐ€ ๋ญ˜๊นŒ? ์ด์œ ๋Š” ๋ฐ”๋กœ sed ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํŒจํ„ด ์Šคํ…Œ์ด์Šค๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

sed๋Š” ํ•œ ํ–‰์„ ์ฝ์œผ๋ฉด 1) ํŒจํ„ด ์ŠคํŽ˜์ด์Šค๋ผ๋Š” ์žฅ์†Œ์— ๋ณต์‚ฌํ•˜๊ณ  2)ํŽธ์ง‘ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ ๋’ค 3)ํŒจํ„ด ์ŠคํŽ˜์ด์Šค์˜ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ์œ„๋ฅผ ์˜ˆ์‹œ๋กœ ํ•˜๋ฉด, ํ‘œ์ค€ ์ถœ๋ ฅ์˜ ์ฒซ๋ฒˆ์งธ ํ–‰์ธ Ber์€ ํ•ด๋‹น ๋ช…๋ น์–ด ์ค‘ 1p ๋ผ๋Š” ์Šคํฌ๋ฆฝํŠธ๋กœ ์ถœ๋ ฅ๋œ ๊ฒƒ์ด๊ณ  ๊ทธ ๋ฐ‘์˜ ๋‚ด์šฉ์€ ๋ชจ๋‘ ํŒจํ„ด ์ŠคํŽ˜์ด์Šค ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•œ ๊ฒƒ์ด๋‹ค. sed๊ฐ€ ํ‘œ์ค€์ถœ๋ ฅ์œผ๋กœ ๋‚˜์˜ค๋Š” ๊ณผ์ •์„ ๋‹จ๊ณ„๋ณ„๋กœ ๊ทธ๋ฆฌ๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

sed ๋ช…๋ น์–ด ํ‘œ์ค€ ์ถœ๋ ฅ์˜ ์›๋ฆฌ

 

๋”ฐ๋ผ์„œ ํŒจํ„ด ์ŠคํŽ˜์ด์Šค์˜ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด -n ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด ํŒจํ„ด ์ŠคํŽ˜์ด์Šค ๋‚ด์šฉ์€ ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š”๋‹ค

 

sed -n 1p grep.txt

 

-n ์˜ต์…˜์œผ๋กœ ์ธํ•ด ํŒจํ„ด์ŠคํŽ˜์ด์Šค๋Š” ์ถœ๋ ฅ๋˜์ง€ ์•Š์Œ

2-3. ํ–‰์„ ์น˜ํ™˜ํ•˜๋Š” s ๋ช…๋ น์–ด

ํ–‰์„ ์น˜ํ™˜ํ•˜๋Š” ๋ช…๋ น์–ด๋Š” s์ด๋‹ค. sed๋Š” ์ฃผ๋กœ ์น˜ํ™˜์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ช…๋ น์–ด๋Š” ๋งค์šฐ ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. s ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ˜•์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

sed s/์น˜ํ™˜ ์ „ ๋ฌธ์ž์—ด/์น˜ํ™˜ ํ›„ ๋ฌธ์ž์—ด/์˜ต์…˜ [ํŒŒ์ผ ์ด๋ฆ„]

 

์œ„ ํ˜•์‹์—์„œ '์˜ต์…˜'์€ ์ƒ๋žต์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์œ„์—์„œ ์‚ดํŽด๋ณธ grep.txt ๋ผ๋Š” ํŒŒ์ผ ๋‚ด์šฉ์—์„œ Beer๋ฅผ Vodka๋กœ ์น˜ํ™˜ํ•˜๋Š” ๋ช…๋ น์–ด ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

sed 's/Beer/Vodka' grep.txt

 

์œ„ ๋ช…๋ น์–ด๋Š” ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋งŒ ์น˜ํ™˜์„ ํ•˜๋Š”๋ฐ, ๋ชจ๋“  ๋ฌธ์ž์—ด์„ ์น˜ํ™˜ํ•˜๋ ค๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ g๋ผ๋Š” ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค.

 

sed 's/Beer/Vodka/g' grep.txt

 

๊ทธ๋ฆฌ๊ณ  ๋ช…๋ น์–ด ํ˜•์‹์— '์น˜ํ™˜ ์ „ ๋ฌธ์ž์—ด'์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„์„ ์ •๊ทœํ‘œํ˜„์‹์„ ์ ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ฐธ๊ณ ๋กœ -E ์˜ต์…˜์„ ๋„ฃ์–ด์ค€ ์ด์œ ๋Š” ๋ฉ”ํƒ€ ๋ฌธ์ž +๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ™•์žฅ ์ •๊ทœ ํ‘œํ˜„์‹์„ ํ™œ์šฉํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.(-r ์˜ต์…˜๋„ ๊ฐ€๋Šฅ!)

 

sed -E 'g/B.+r/Vodka/g' grep.txt

 

๊ทธ๋ฆฌ๊ณ  '์น˜ํ™˜ ํ›„ ๋ฌธ์ž์—ด'์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„์„ ๋น„์šด์ฑ„ ํ• ๋‹นํ•ด์ฃผ๋ฉด ์น˜ํ™˜ ์ „ ๋ฌธ์ž์—ด์„ ์‚ญ์ œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ•ด์ฃผ๊ฒŒ ๋œ๋‹ค. ๋˜ํ•œ ์œ„์—์„œ ๋ฐฐ์šด ํŒจํ„ด ์ŠคํŽ˜์ด์Šค๋ฅผ ์ถœ๋ ฅํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” -n ์˜ต์…˜๊ณผ ์น˜ํ™˜ํ•œ ํ–‰๋งŒ ์ถœ๋ ฅํ•˜๋Š” gp ์˜ต์…˜์„ ๊ฒฐ๋ถ€์‹œํ‚ค๋ฉด ์น˜ํ™˜์ด ๋ฐœ์ƒํ•œ ํ–‰๋งŒ์„ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

sed -E -n 's/B.+r/Vodka/gp' grep.txt

 

๋‹ค์Œ์œผ๋กœ ๋ฐฐ์›Œ ๋ณผ ๊ฐœ๋…์€ ์ •๊ทœ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•ด ์น˜ํ™˜ํ•˜๋Š”๋ฐ ๋ฌธ์ž์—ด์˜ ์ผ๋ถ€๋งŒ ์น˜ํ™˜ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ›„๋ฐฉ ์ฐธ์กฐ์ด๋‹ค. ํ›„๋ฐฉ ์ฐธ์กฐ๋ž€, ์ •๊ทœ ํ‘œํ˜„์‹์—์„œ ( ) ๋ผ๋Š” ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ทธ๋ฃนํ™”ํ•œ ํ›„ \1, \2 ์ฒ˜๋Ÿผ `\๊ทธ๋ฃน๋ฒˆํ˜ธ` ํ˜•์‹์œผ๋กœ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ •๊ทœ ํ‘œํ˜„์‹ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ํ›„๋ฐฉ ์ฐธ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์ฒ˜๋Ÿผ ๋‹ค๋ฅด๋‹ค.

 

๊ธฐ๋ณธ ์ •๊ทœ ํ‘œํ˜„์‹ ํ™•์žฅ ์ •๊ทœ ํ‘œํ˜„์‹
\( \) ๋กœ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ \1 ๋กœ ์ฐธ์กฐ ( ) ๋กœ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ \1 ๋กœ ์ฐธ์กฐ

 

์‚ฌ์šฉ ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

sed 's/My \(.*\(/--\1--/gp' grep.txt

 

์น˜ํ™˜ ๋ช…๋ น์–ด๋Š” ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ์˜ ๋งจ ์•ž์—๋‹ค๊ฐ€ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋งŒ์•ฝ 1ํ–‰๊ณผ 3ํ–‰ ์‚ฌ์ด์—์žˆ๋Š” ๋ชจ๋“  ๋ฌธ์ž์—ด์— ์žˆ๋Š” ๊ฒƒ๋“ค์„ ์น˜ํ™˜ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ์ ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

sed -E '1,3s/B.*r/Son/g' grep.txt

 

๋งŒ์•ฝ ์น˜ํ™˜ํ•  ๋ฌธ์ž์—ด์— ์Šฌ๋ž˜์‰ฌ(/)๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋ฉด ํ•ด๋‹น ๋ฌธ์ž ์•ž์— ์—ญ์Šฌ๋ž˜์‰ฌ(\)๋ฅผ ๋ถ™์ด๋ฉด ๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด๊ฒƒ๋ณด๋‹ค ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”๋ฐ, ๋ฐ”๋กœ sed ์น˜ํ™˜ ๋ช…๋ น์–ด ํ˜•์‹์—์„œ ๊ตฌ๋ถ„์ž๋กœ ์ง€์ •๋˜์–ด ์žˆ๋Š” ์Šฌ๋ž˜์‰ฌ(/)๋ฅผ ๋‹ค๋ฅธ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ๋ฉด ๋œ๋‹ค. s ๋ช…๋ น์–ด ๋ฐ”๋กœ ๋’ค์— ๋ฌธ์ž๋กœ ๊ตฌ๋ถ„์ž๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ๋ช…๋ น์–ด๋“ค์€ ๋ชจ๋‘ ๋™์ผํ•œ ํ‘œ์ค€ ์ถœ๋ ฅ์„ ๋‚ธ๋‹ค.

 

sed 's/B.*r/Son/g' grep.txt
sed 's!B.*r!Son!g' grep.txt
sed 's%/B.*r%Son%g' grep.txt

3. ํ…์ŠคํŠธ ๊ฒ€์ƒ‰, ์ถ”์ถœ, ๊ฐ€๊ณต์˜ ํŽธ์ง‘ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•œ awk ๋ช…๋ น์–ด

์˜คํฌ(awk)๋Š” ์ฃผ๋กœ ํ…์ŠคํŠธ๋ฅผ ๊ณ ๋„ํ™”ํ•ด์„œ ๊ฒ€์ƒ‰ํ•˜๊ฑฐ๋‚˜ ์ถ”์ถœ, ๊ฐ€๊ณต์˜ ํŽธ์ง‘ ์ž‘์—…์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๋ช…๋ น์–ด์ด๋‹ค. awk๋„ sed ์ฒ˜๋Ÿผ ์…ธ์—์„œ ํŽธ์ง‘์ž‘์—…์„ ์‹คํ–‰ํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ‘œ์ค€์ถœ๋ ฅ์œผ๋กœ ๋‚ด์ค€๋‹ค. awk๋Š” sed ๋ณด๋‹ค ๋” ๊ณ ๋„์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค๊ณ  ํ•ด์„œ ํ…์ŠคํŠธ ์ฒ˜๋ฆฌ์— ํŠนํ™”๋œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ˆ˜์ค€๊นŒ์ง€๋กœ ์ธ์ •๋ฐ›๊ธฐ๋„ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด awk ๋ช…๋ น์–ด์˜ ํ˜•์‹๋ถ€ํ„ฐ ์‚ดํŽด๋ณด์ž.

 

awk ๋ช…๋ น์–ด ํ˜•์‹

 

awk ๋ช…๋ น์–ด๋Š” ์Šคํฌ๋ฆฝํŠธ์™€ ๋Œ€์ƒํŒŒ์ผ๋กœ ๊ตฌ์„ฑ๋˜๊ณ  ์Šคํฌ๋ฆฝํŠธ๋Š” ํŒจํ„ด๊ณผ ์•ก์…˜์œผ๋กœ ์„ธ๋ถ„ํ™”๋˜์–ด ๊ตฌ์„ฑ๋œ๋‹ค. awk๋„ sed์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ•œ ํ–‰์”ฉ ์ฝ์–ด์„œ ์ง€์ •ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ํŒจํ„ด์—๋Š” ์•ก์…˜์„ ์‹คํ–‰ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์กฐ๊ฑด์„ ๋ช…์‹œํ•œ๋‹ค. ์ฆ‰, awk๋Š” ๋Œ€์ƒ ํ…์ŠคํŠธ์˜ ํ–‰๋งˆ๋‹ค ๋ช…์‹œํ•œ ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š”์ง€๋ฅผ ํ™•์ธํ•œ๋‹ค. ์ฐธ๊ณ ๋กœ awk์—์„œ๋Š” ํ…์ŠคํŠธ์˜ 'ํ•œ ํ–‰'์„ '๋ ˆ์ฝ”๋“œ'๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ํŒจํ„ด์€ ์ƒ๋žต์ด ๊ฐ€๋Šฅํ•œ๋ฐ ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•ด ์•ก์…˜์ด ์‹คํ–‰๋œ๋‹ค. awk์˜ ํŽธ์ง‘ ๋™์ž‘ ๊ณผ์ •์„ ๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

awk ํŽธ์ง‘ ๋™์ž‘ ๊ณผ์ •

3-1. print์™€ ํ•„๋“œ ๋ณ€์ˆ˜

awk๋Š” ํŠน์ • ํ•„๋“œ๋ฅผ ์ถ”์ถœํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. ์šฐ์„  ์•„๋ž˜์˜ ๋ช…๋ น์–ด ์˜ˆ์‹œ๋ถ€ํ„ฐ ์‚ดํŽด๋ณด์ž.

 

ls -l /usr/bin | awk '{print $5,$9}'

 

์œ„ ๋ช…๋ น์–ด๋Š” ํŒŒ์ดํ”„๋ผ์ธ ๊ธฐ์ค€ ์™ผ์ชฝ ๋ช…๋ น์–ด์˜ ํ‘œ์ค€ ์ถœ๋ ฅ์„ ํ‘œ์ค€ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›๋Š”๋ฐ ๊ทธ ๋•Œ 5๊ฐœ, 9๋ฒˆ์งธ ํ•„๋“œ๋ณ€์ˆ˜๋งŒ ์ถ”์ถœํ•˜๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค. awk๋Š” ๊ฐ ๋ ˆ์ฝ”๋“œ๋ฅผ ํ•„๋“œ๋กœ ์ž๋™์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์ฒซ๋ฒˆ์งธ ํ•„๋“œ๋ฅผ $1, ๋‘๋ฒˆ์งธ ํ•„๋“œ๋ฅผ $2, ... ์ด๋Ÿฐ ์‹์œผ๋กœ ๋ณ€์ˆ˜์— ๋Œ€์ž…ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ „์ฒด ๋ ˆ์ฝ”๋“œ๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” $0์— ๋Œ€์ž…ํ•œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ณต๋ฐฑ์ด๋‚˜ ํƒญ์„ ๊ตฌ๋ถ„์ž๋กœ ์‚ฌ์šฉํ•ด์„œ ํ•„๋“œ๋ฅผ ๋ถ„ํ• ํ•œ๋‹ค. ์ด ๋•Œ, ๊ณต๋ฐฑ์ด ์—ฌ๋Ÿฌ๊ฐœ๋กœ ์ด์–ด์ ธ๋„ ํ•˜๋‚˜๋กœ ๊ฐ„์ฃผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณต๋ฐฑ์ด ๋ถˆ๊ทœ์น™ํ•˜๋”๋ผ๋„ ๊ฒฐ๊ณผ๊ฐ€ ์ž˜ ์ถœ๋ ฅ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ฝค๋งˆ(,)๋กœ ๊ตฌ๋ถ„๋˜๋Š” csv ํ˜•ํƒœ๊ฐ™์€ ๊ฒƒ์€ ํ•  ์ˆ˜ ์—†๋Š”๊ฐ€? ํ•  ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ awk๋Š” ๊ตฌ๋ถ„์ž๋„ -F ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์„œ ๋ช…์‹œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

๋˜ํ•œ ์œ„ ๋ช…๋ น์–ด์˜ print ๊ตฌ๋ฌธ์—์„œ ํ•„๋“œ ๋ณ€์ˆ˜ ์‚ฌ์ด์— ์ฝค๋งˆ(,)๋ฅผ ์ฐ์—ˆ๋Š”๋ฐ ์ด๋Š” ๊ฒฐ๊ณผ ํ™”๋ฉด์—์„œ ํ•„๋“œ ๊ฐ„์— ๊ณต๋ฐฑ์„ ๋„ฃ์–ด์ฃผ์–ด ํ‘œ์‹œํ•œ๋‹ค. ๋งŒ์•ฝ ์ฝค๋งˆ๋ฅผ ์—†์• ๊ณ  ๊ณต๋ฐฑ์„ ๋„ฃ์–ด์ฃผ๋ฉด ๊ฒฐ๊ณผ ํ™”๋ฉด์˜ ํ•„๋“œ๊ฐ’๋“ค์ด ๋ถ™์–ด์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

# ์ถœ๋ ฅ ๊ฒฐ๊ณผ ํ™”๋ฉด ๋น„๊ตํ•˜๊ธฐ
ls -l /usr/bin | awk '{print $5,$9}' | head -n 10;
ls -l /usr/bin | awk '{print $5 $9}' | head -n 10

 

๋‹ค์Œ์œผ๋กœ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ณ€์ˆ˜๋Š” $NF๊ฐ€ ์žˆ๋‹ค. $NF๋Š” ๋ ˆ์ฝ”๋“œ์˜ ํ•„๋“œ ์ด ๊ฐœ์ˆ˜๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ print ๋ช…๋ น์–ด์— $NF ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ํ•„๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋œ๋‹ค. ํ•„๋“œ ๊ฐœ์ˆ˜๊ฐ€ ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ์„ ๋•Œ, ๋งˆ์ง€๋ง‰ ํ•„๋“œ๋งŒ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์„ ๋•Œ ํ•„๋“œ ๊ฐœ์ˆ˜๋ฅผ ์ผ์ผ์ด ์„ธ์ง€ ์•Š์•„๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํŽธ๋ฆฌํ•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  awk์˜ ์•ก์…˜์—์„œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์ง€๋ง‰์—์„œ ๋‘ ๋ฒˆ์งธ ํ•„๋“œ๋งŒ์„ ์ถ”์ถœํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ์‘์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

ls -l /usr/bin | awk '{print $(NF-1)}' | head -n 10

 

๋‹ค์Œ์€ ์•ก์…˜์„ ์ˆ˜ํ–‰ํ• ์ง€ ์กฐ๊ฑด์„ ๋ถ€์—ฌํ•˜๋Š” awk์˜ ํŒจํ„ด ์ง€์ •์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ์ด๊ฒƒ๋„ ์˜ˆ์‹œ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ณด์ž.

 

awk์—์„œ ํŒจํ„ด์„ ์ง€์ •ํ•˜๋Š” ์˜ˆ์‹œ

 

awk๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™•์žฅ ์ •๊ทœ ํ‘œํ˜„์‹ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ •๊ทœ ํ‘œํ˜„์‹์€ ์Šฌ๋ž˜์‰ฌ(/)๋กœ ๊ฐ์‹ธ์•ผ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ •๊ทœ ํ‘œํ˜„์‹์„ ์ ์šฉํ•  ํ•„๋“œ๋ฅผ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด ์œ„์ฒ˜๋Ÿผ ํ‹ธ๋“œ(~)๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ ์ •๊ทœ ํ‘œํ˜„์‹์„ ์ ์šฉํ•  ํ•„๋“œ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ ˆ์ฝ”๋“œ ์ „์ฒด ํ•„๋“œ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์ •๊ทœ ํ‘œํ˜„์‹์— ํ•ด๋‹นํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ฒŒ ๋œ๋‹ค.

 

๋‹ค์Œ์œผ๋กœ๋Š” ์•ก์…˜์„ ์ƒ๋žตํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์•ก์…˜์„ ์ƒ๋žตํ•˜๋ฉด ๋‹จ์ˆœํžˆ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ถœ๋ ฅํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ์•„๋ž˜ 3๊ฐ€์ง€ ๋ช…๋ น์–ด๋Š” ๋ชจ๋‘ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋ฑ‰๋Š”๋‹ค.

 

awk '$9 ~/^cp/'
awk '$9 ~/^cp/ {print}'
awk '$9 ~/^cp/ {print $0}'

 

 

๊ทธ๋Ÿฌ๋ฉด ๋งˆ์ง€๋ง‰์œผ๋กœ awk๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์‹ค์ „ ์˜ˆ์ œ๋ฅผ ์‚ดํŽด๋ณด๊ณ  ๋งˆ๋ฌด๋ฆฌํ•˜์ž. ์•„๋ž˜์™€ ๊ฐ™์€ csv ํŒŒ์ผ์ด ์žˆ๋‹ค๊ณ  ํ•˜์ž.

 

csv ์ถœ๋ ฅํ™”๋ฉด

 

์—ฌ๊ธฐ์„œ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ํ•„๋“œ๋Š” ์ ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ํ‰๊ท  ์ ์ˆ˜๋ฅผ awk ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ•ด๋ณด์ž. ์šฐ์„  awk๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ชจ๋“  ํ•„๋“œ๋ฅผ ์ถœ๋ ฅํ•ด๋ณด๋Š” ๊ฒƒ๋ถ€ํ„ฐ ํ•ด๋ณด์ž csv ํŒŒ์ผ์€ ์‰ผํ‘œ๊ฐ€ ๊ตฌ๋ถ„์ž์ด๋‹ค. awk์—์„œ๋Š” -F ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์„œ ๊ตฌ๋ถ„์ž๋ฅผ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

 

awk -F , '{print $0}' score.csv

 

๊ทธ๋Ÿฌ๋ฉด ์ด์ œ ์ ์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ๋งˆ์ง€๋ง‰ ํ•„๋“œ๋งŒ ์ถœ๋ ฅํ•ด๋ณด์ž. ์ง€๊ธˆ ํŒŒ์ผ์—์„  ๊ทธ๋Ÿด ๋ฆฌ ์—†์ง€๋งŒ ํ˜น์‹œ๋ผ๋„ ๋‹ค๋ฅธ ํ–‰์—๋งŒ ์ค‘๊ฐ„์— ๊ณต๋ฐฑ๊ฐ™์€ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ถ”๊ฐ€ ํ•„๋“œ๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ ๋งˆ์ง€๋ง‰ ํ•„๋“œ๋ฅผ ์˜๋ฏธํ•˜๋Š” $NF๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ถœ๋ ฅํ•ด๋ณด์ž.

 

awk -F , '{print $NF}' score.csv

 

ํ‰๊ท ์€ ๋ชจ๋“  ์ ์ˆ˜๋ฅผ ๋”ํ•œ ๋’ค ๊ทธ ๊ฐœ์ˆ˜๋งŒํผ ๋‚˜๋ˆ„๋ฉด ๋œ๋‹ค. awk๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ์ˆ˜๋„ ์žˆ๋Š”๋ฐ ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€๋Š” ๋‹ฌ๋ฆฌ ๋ณ€์ˆ˜ ์„ ์–ธ์ด๋‚˜ ์ดˆ๊ธฐํ™”๋ฅผ ํ•˜์ง€ ์•Š๊ณ ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ awk์—์„œ ์ˆซ์ž๊ฐ’์„ ๊ฐ–๋Š” ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐ๊ฐ’์€ 0์ด ๋œ๋‹ค. awk๋Š” ๊ฐ ํ–‰(๋ ˆ์ฝ”๋“œ)๋งˆ๋‹ค ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ๋ณ€์ˆ˜์— ์ ์ˆ˜๋ฅผ ๋ชจ๋‘ ๋”ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ™œ์šฉํ•ด์„œ ๋ง์ด๋‹ค.

 

awk -F , '{sum += $NF} END {print sum}' score.csv

 

์œ„์—์„œ END ํŒจํ„ด์ด ์‚ฌ์šฉ๋˜์—ˆ๋‹ค. END ์•ˆ์— ์žˆ๋Š” ์•ก์…˜์€ ๋ชจ๋“  ์ž…๋ ฅ ํŒŒ์ผ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚œ ๋’ค ๋งˆ์ง€๋ง‰์— ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๋Š” ํŒจํ„ด์ด๋‹ค. ์ด์ œ ํ•ฉ์„ ๊ตฌํ–ˆ์œผ๋‹ˆ ํ…์ŠคํŠธ ํ–‰์˜ ๊ฐœ์ˆ˜๋งŒํผ ๋‚˜๋ˆ„๋ฉด ๋œ๋‹ค. awk๊ฐ€ ์ฝ๋Š” ์ž…๋ ฅ ํŒŒ์ผ์˜ ํ–‰ ์ˆ˜๋Š” NR ์ด๋ผ๋Š” ๊ฐ’์— ๋‹ด๊ฒจ์ ธ ์žˆ๋‹ค. NR์€ ์•„๋งˆ Number of Rows, NF๋Š” Number of Fields์˜ ์ค„์ž„๋ง์ธ ๋“ฏ ํ•˜๋‹ค. NR์€ awk๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ์ฝ์€ ๋ ˆ์ฝ”๋“œ ์ˆ˜๊ฐ€ ๋‹ด๊ฒจ ์žˆ์œผ๋ฏ€๋กœ END ๋ธ”๋ก์ด ์‹คํ–‰๋  ๋•Œ๋Š” ๊ฒฐ๊ตญ ์ž…๋ ฅ ํŒŒ์ผ์˜ ์ „์ฒด ๋ ˆ์ฝ”๋“œ ๊ฐœ์ˆ˜๊ฐ€ ๋‹ด๊ธฐ๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ํ‰๊ท ์„ ๊ตฌํ•˜๋Š” ๋ช…๋ น์–ด๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

awk -F , '{sum += $NF} END {print "Average Score:", sum/NR}' score.csv

 

์ด๋ ‡๊ฒŒ ๋งŒ๋“  awk ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๋ฉด ๋‚˜์ค‘์— ๋ถˆ๋Ÿฌ ์“ธ ์ˆ˜๋„ ์žˆ๋‹ค. -f ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์„œ awk ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ ํžŒ ํŒŒ์ผ์„ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค. ์•„๋ž˜์ฒ˜๋Ÿผ .awk ํ™•์žฅ์ž๋ช…์˜ ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  -f ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์„œ .awk ํŒŒ์ผ์„ ์ฝ์–ด๋“ค์—ฌ ์‹คํ–‰๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

.awk ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ๋“ค์–ด ์‹คํ–‰๋„ ๊ฐ€๋Šฅํ•˜๋‹ค


์ง€๊ธˆ๊นŒ์ง€ ํ…์ŠคํŠธ๋ฅผ ๊ณ ๋„ํ™”ํ•ด์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ช…๋ น์–ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค. ๋‹ค์Œ ํฌ์ŠคํŒ…๋ถ€ํ„ฐ๋Š” ์…ธ ์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•ด ๋ฐฐ์›Œ๋ณด๋„๋ก ํ•˜์ž.

๋ฐ˜์‘ํ˜•