๐ ํด๋น ํฌ์คํ ์ ๋ชจ๋์ ๋ฆฌ๋ ์ค ์์ ์ ๋ด์ฉ์ ์ฝ๊ณ ๊ฐ์ธ์ ์ธ ์ ๋ฆฌ ๋ชฉ์ ํ์ ์์ฑ๋ ๊ธ์์ ์๋ฆฝ๋๋ค. ํฌ์คํ ๋ด์ฉ์ ๊ธฐ๋ฐ ๋ด์ฉ์ ํด๋น ์์ ์ ๊ธฐ๋ฐํ์์ผ๋ฉฐ ๋ด์ฉ ์์ฒด๋ ์ ๊ฐ ์ง์ ์ฌ๊ตฌ์ฑํ์์ ์๋ฆฝ๋๋ค.

์ด๋ฒ ํฌ์คํ ์์๋ ํ ์คํธ ์ฒ๋ฆฌ๋ฅผ ๊ณ ๋ํํ๋ ๋ฐ ํต์ฌ์ด๋ผ๊ณ ํ ์ ์๋ ์ ๊ทํํ์, ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ํ์ฉํด ๋ฆฌ๋ ์ค์์ ํ ์คํธ๋ฅผ ๊ณ ๋ํํด์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณธ๋ค.
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 ๋ผ๋ ๋น๋ํํ ์๋ํฐ์ ๋์ ๊ณผ์ ์ ๋จ๊ณํํ๋ฉด ์๋์ ๊ฐ๋ค.
- ์ ธ์์ ํธ์ง ๋ด์ฉ์ ์ธ์๋ก ์ง์ ํ์ฌ sed ๋ช ๋ น์ด๋ฅผ ์คํ
- sed๊ฐ ํธ์ง์ ์ํ
- ํธ์ง์ด ์๋ฃ๋ ๋ด์ฉ์ ํ์ค ์ถ๋ ฅ์ผ๋ก ์ถ๋ ฅ
์์ ๊ฐ์ด ๋์ํ๋ ๋น๋ํํ ์๋ํฐ๋ ๋ํํ ์๋ํฐ์๋ ๋ค๋ฅด๊ฒ ํธ์ง ๊ณผ์ ์ด ์ฌ๋ ๋์ ๋ณด์ด์ง ์๋๋ค๋ ๊ฒ์ด ํน์ง์ด๋ค. ๊ทธ๋ฆฌ๊ณ 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 ๋ช ๋ น์ด์ด๋ค. ์๋ฅผ ๋ค์ด, ์๋์ ๊ฐ์ ํ ์คํธ ๋ด์ฉ์ด ์๋ค๊ณ ๊ฐ์ ํ๊ณ ์๋์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด๋ณด์.

sed 1p grep.txt
์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ๋ค. ๊ทผ๋ฐ ๋ญ๊ฐ ์ด์ํ ์ ์ด ์๋ค.

๋ช ๋ น์ด๋ 1๋ฒ์งธ ํ๋ง ์ถ๋ ฅํ๋ผ๋ ๋ช ๋ น์ด์๋ค. ๊ทธ๋์ ํ์ค ์ถ๋ ฅ์ 1๋ฒ์งธ ์ค์ 'Ber'์ด ๋์จ๊ฒ์ ์ดํด๊ฐ ๋๋๋ฐ, ๊ฐ์๊ธฐ ๋ฐ์ ํ์ผ ๋ด์ฉ ์ ์ฒด๊ฐ ๋ค์ ํ๋ฒ ์ถ๋ ฅ๋์๋ค. ๋์ฒด ์ด์ ๊ฐ ๋ญ๊น? ์ด์ ๋ ๋ฐ๋ก sed ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํจํด ์คํ ์ด์ค๋ฅผ ์ถ๋ ฅํ๊ธฐ ๋๋ฌธ์ด๋ค.
sed๋ ํ ํ์ ์ฝ์ผ๋ฉด 1) ํจํด ์คํ์ด์ค๋ผ๋ ์ฅ์์ ๋ณต์ฌํ๊ณ 2)ํธ์ง ๋ช ๋ น์ด๋ฅผ ์คํํ ๋ค 3)ํจํด ์คํ์ด์ค์ ๋ด์ฉ์ ์ถ๋ ฅํ๊ฒ ๋๋ค. ๊ทธ๋์ ์๋ฅผ ์์๋ก ํ๋ฉด, ํ์ค ์ถ๋ ฅ์ ์ฒซ๋ฒ์งธ ํ์ธ Ber์ ํด๋น ๋ช ๋ น์ด ์ค 1p ๋ผ๋ ์คํฌ๋ฆฝํธ๋ก ์ถ๋ ฅ๋ ๊ฒ์ด๊ณ ๊ทธ ๋ฐ์ ๋ด์ฉ์ ๋ชจ๋ ํจํด ์คํ์ด์ค ๋ด์ฉ์ ์ถ๋ ฅํ ๊ฒ์ด๋ค. sed๊ฐ ํ์ค์ถ๋ ฅ์ผ๋ก ๋์ค๋ ๊ณผ์ ์ ๋จ๊ณ๋ณ๋ก ๊ทธ๋ฆฌ๋ฉด ์๋์ ๊ฐ๋ค.

๋ฐ๋ผ์ ํจํด ์คํ์ด์ค์ ๋ด์ฉ์ ์ถ๋ ฅํ์ง ์์ผ๋ ค๋ฉด -n ์ต์ ์ ์ฌ์ฉํ๋ฉด ๋๋ค. ๊ทธ๋์ ์๋์ ๊ฐ์ด ์ฌ์ฉํ๋ฉด ํจํด ์คํ์ด์ค ๋ด์ฉ์ ์ถ๋ ฅ๋์ง ์๋๋ค
sed -n 1p grep.txt

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๋ sed์ ๋ง์ฐฌ๊ฐ์ง๋ก ํ ํ์ฉ ์ฝ์ด์ ์ง์ ํ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ค. ์ฌ๊ธฐ์ ํจํด์๋ ์ก์ ์ ์คํํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ์กฐ๊ฑด์ ๋ช ์ํ๋ค. ์ฆ, 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๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฅ ์ ๊ท ํํ์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. ์ ๊ท ํํ์์ ์ฌ๋์ฌ(/)๋ก ๊ฐ์ธ์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๊ท ํํ์์ ์ ์ฉํ ํ๋๋ฅผ ์ง์ ํ๊ธฐ ์ํด ์์ฒ๋ผ ํธ๋(~)๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. ๋ง์ฝ ์ ๊ท ํํ์์ ์ ์ฉํ ํ๋๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ๋ ์ฝ๋ ์ ์ฒด ํ๋ ์ค ํ๋๋ผ๋ ์ ๊ท ํํ์์ ํด๋นํ๋์ง ํ์ธํ๊ฒ ๋๋ค.
๋ค์์ผ๋ก๋ ์ก์ ์ ์๋ตํ ์๋ ์๋ค. ์ก์ ์ ์๋ตํ๋ฉด ๋จ์ํ ๋ ์ฝ๋๋ฅผ ์ถ๋ ฅํ๊ฒ ๋๋ค. ๊ทธ๋์ ์๋ 3๊ฐ์ง ๋ช ๋ น์ด๋ ๋ชจ๋ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ด๋ฑ๋๋ค.
awk '$9 ~/^cp/'
awk '$9 ~/^cp/ {print}'
awk '$9 ~/^cp/ {print $0}'
๊ทธ๋ฌ๋ฉด ๋ง์ง๋ง์ผ๋ก awk๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๋จํ ์ค์ ์์ ๋ฅผ ์ดํด๋ณด๊ณ ๋ง๋ฌด๋ฆฌํ์. ์๋์ ๊ฐ์ 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 ํ์ผ์ ์ฝ์ด๋ค์ฌ ์คํ๋ ๊ฐ๋ฅํ๋ค.

์ง๊ธ๊น์ง ํ ์คํธ๋ฅผ ๊ณ ๋ํํด์ ์ฒ๋ฆฌํ ์ ์๋ ์ฌ๋ฌ๊ฐ์ง ๋ช ๋ น์ด์ ๋ํด ์์๋ณด์๋ค. ๋ค์ ํฌ์คํ ๋ถํฐ๋ ์ ธ ์คํฌ๋ฆฝํธ์ ๋ํด ๋ฐฐ์๋ณด๋๋ก ํ์.