{"id":209,"date":"2026-05-13T11:52:22","date_gmt":"2026-05-13T03:52:22","guid":{"rendered":"https:\/\/junai.ai\/blog\/linux-grep-sed-awk-23\/"},"modified":"2026-05-13T11:52:22","modified_gmt":"2026-05-13T03:52:22","slug":"linux-grep-sed-awk-23","status":"publish","type":"post","link":"https:\/\/junai.ai\/blog\/linux-grep-sed-awk-23\/","title":{"rendered":"\ub9ac\ub205\uc2a4 \ud14d\uc2a4\ud2b8 \ucc98\ub9ac 3\uc885 \u2014 grep\u00b7sed\u00b7awk \uc2e4\uc804 (23\ud3b8)"},"content":{"rendered":"\n<!-- WordPress REST API \ubc1c\ud589\uc6a9 HTML (\uc790\ub3d9 \uc0dd\uc131) -->\n<!-- WP-FEATURED-MEDIA-ID: 203 -->\n<div style=\"max-width:800px;margin:0 auto;\">\n<style>\n:root{\n  --color-primary:#1e40af;--color-accent:#3b82f6;--color-bg:#fafafa;--color-bg-card:#ffffff;\n  --color-text:#1e293b;--color-text-muted:#64748b;--hero-start:#0f172a;--hero-end:#1e40af;\n  --font-body:-apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo','Noto Sans KR',sans-serif;\n  --size-body:17px;--line-height:1.75;--h1-size:32px;--h2-size:27px;--h3-size:20px;\n}\n*{margin:0;padding:0;box-sizing:border-box;}\n.wrap{max-width:760px;margin:0 auto;padding:0 20px;}\n.hero{background:linear-gradient(135deg,var(--hero-start) 0%,var(--hero-end) 100%);color:#fff;padding:64px 0 56px;text-align:center;}\n.hero .eyebrow{display:inline-block;font-size:13px;letter-spacing:1px;text-transform:uppercase;color:#93c5fd;font-weight:700;margin-bottom:16px;}\n.hero h1{font-size:var(--h1-size);line-height:1.32;letter-spacing:-0.3px;font-weight:800;margin-bottom:18px;}\n.hero p.sub{font-size:18px;color:#cbd5e1;max-width:620px;margin:0 auto;}\n.hero .meta{margin-top:22px;font-size:14px;color:#94a3b8;}\n.hero-img{display:block;width:100%;height:auto;}\narticle{padding:48px 0 24px;}\narticle h2{font-size:var(--h2-size);line-height:1.35;letter-spacing:-0.3px;font-weight:800;margin:48px 0 18px;padding-left:14px;border-left:5px solid var(--color-primary);}\narticle h2:first-of-type{margin-top:8px;}\narticle h3{font-size:var(--h3-size);font-weight:700;margin:28px 0 10px;color:#0f172a;}\narticle p{margin:0 0 18px;}\narticle ul,article ol{margin:0 0 18px 4px;padding-left:22px;}\narticle li{margin-bottom:9px;}\narticle strong{color:#0f172a;font-weight:700;}\narticle a{color:var(--color-primary);text-decoration:underline;text-underline-offset:2px;}\narticle code{background:#0f172a;color:#e2e8f0;padding:2px 7px;border-radius:5px;font-size:0.9em;font-family:'SF Mono',Menlo,Consolas,monospace;}\n.intro p:first-child{font-size:19px;color:#334155;}\n.notice{background:#eef2ff;border:1px solid #c7d2fe;border-radius:10px;padding:14px 18px;margin:0 0 30px;font-size:15px;color:#3730a3;}\n.notice b{color:#312e81;}\n.tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:22px 0;}\ntable{width:100%;border-collapse:collapse;font-size:15px;background:var(--color-bg-card);}\nth,td{padding:11px 12px;text-align:left;border-bottom:1px solid #e2e8f0;vertical-align:top;}\nth{background:#f1f5f9;font-weight:700;color:#0f172a;}\ntd:first-child,th:first-child{font-weight:700;}\n@media (max-width:560px){\n  .tablewrap table,.tablewrap thead,.tablewrap tbody,.tablewrap tr,.tablewrap th,.tablewrap td{display:block;width:auto;}\n  .tablewrap thead{display:none;}\n  .tablewrap tr{margin:0 0 14px;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden;}\n  .tablewrap td{border:none;border-bottom:1px solid #f1f5f9;padding:9px 14px;}\n  .tablewrap td:first-child{background:#f1f5f9;font-weight:800;font-size:15.5px;}\n  .tablewrap td:last-child{border-bottom:none;}\n  .tablewrap td[data-label]::before{content:attr(data-label) \" \u2014 \";font-weight:700;color:var(--color-primary);}\n}\n.databox{background:#eff6ff;border-left:4px solid var(--color-accent);border-radius:0 8px 8px 0;padding:16px 18px;margin:20px 0;font-size:15.5px;}\n.databox b{color:var(--color-primary);}\n.warnbox{background:linear-gradient(135deg,#fffbeb 0%,#fef3c7 100%);border-radius:10px;padding:16px 18px;margin:22px 0;font-size:15.5px;color:#78350f;}\n.cmd{background:#0f172a;color:#e2e8f0;border-radius:10px;padding:14px 16px;margin:14px 0;font-family:'SF Mono',Menlo,Consolas,monospace;font-size:14px;line-height:1.8;overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:pre-wrap;}\n.cmd .c{color:#7dd3fc;}\n.cmd .o{color:#94a3b8;}\n.cmd .t{color:#fbbf24;}\n.cmd .k{color:#c084fc;}\n.cmd .r{color:#f87171;}\n.roadmap{background:var(--color-bg-card);border:1px solid #e2e8f0;border-radius:12px;padding:18px 20px;margin:24px 0;font-size:15px;}\n.roadmap h3{margin:0 0 10px;font-size:17px;color:#0f172a;}\n.roadmap ol{margin:0 0 0 4px;padding-left:20px;}\n.roadmap li{margin-bottom:5px;color:#475569;}\n.cta{background:#0f172a;color:#e2e8f0;border-radius:14px;padding:26px 24px;margin:40px 0 8px;text-align:center;}\n.cta h3{color:#fff;margin:0 0 8px;font-size:19px;}\n.cta p{margin:0 0 4px;font-size:15px;color:#cbd5e1;}\n.cta a{color:#93c5fd;}\nfooter{padding:30px 0 50px;text-align:center;color:var(--color-text-muted);font-size:13.5px;}\n@media (max-width:480px){:root{--h1-size:23px;--h2-size:20px;--size-body:16px;}.hero{padding:48px 0 40px;}article{padding:34px 0 16px;}.cmd{font-size:12.5px;}}\n<\/style>\n<header class=\"hero\">\n  <div class=\"wrap\">\n    <span class=\"eyebrow\">\uc6b0\ubd84\ud22c \u00b7 \ub9ac\ub205\uc2a4 \uc785\ubb38 \u2014 23\ud3b8 (\uace0\uae09)<\/span>\n    <h1>\ub9ac\ub205\uc2a4 \ud14d\uc2a4\ud2b8 \ucc98\ub9ac 3\uc885 \u2014 grep\u00b7sed\u00b7awk \uc2e4\uc804<\/h1>\n    <p class=\"sub\">\ucc3e\uae30\ub294 grep, \ubc14\uafb8\uae30\ub294 sed, \uc5f4\ub85c \uc798\ub77c \uacc4\uc0b0\uc740 awk. \ub85c\uadf8\u00b7CSV\u00b7\uc124\uc815 \ud30c\uc77c\uc744 \uba85\ub839 \ud55c \uc904\ub85c \uc8fc\ubb34\ub974\ub294 \ub3c4\uad6c\ub4e4\uc785\ub2c8\ub2e4.<\/p>\n    <p class=\"meta\">2026\ub144 5\uc6d4 13\uc77c \u00b7 \uc57d 8\ubd84 \u00b7 26\ud3b8 \uc785\ubb38 \uc2dc\ub9ac\uc988 23\ud3b8<\/p>\n  <\/div>\n<\/header>\n\n<img decoding=\"async\" class=\"hero-img\" src=\"https:\/\/junai.ai\/blog\/wp-content\/uploads\/2026\/05\/hero-30.jpg\" alt=\"app.log \ub97c grep | awk | sort | uniq \ub85c \ubd84\uc11d\ud558\uace0 sed -i.bak \uc73c\ub85c \uc124\uc815 \ud30c\uc77c\uc744 \ubc14\uafb8\ub294 \ud130\ubbf8\ub110 \ud654\uba74 \uc77c\ub7ec\uc2a4\ud2b8 \u2014 grep\u00b7sed\u00b7awk \uc2e4\uc804\uc744 \uc0c1\uc9d5\">\n\n<div class=\"wrap\">\n<article>\n\n  <div class=\"intro\">\n    <p>12\ud3b8(\ud30c\uc774\ud504\u00b7\ub9ac\ub2e4\uc774\ub809\uc158)\uc5d0\uc11c \uba85\ub839\uc744 <code>|<\/code> \ub85c \uc5ee\ub294 \ubc95\uc744 \ubd24\uace0, 21~22\ud3b8\uc5d0\uc11c \uc178 \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc9f0\uc8e0. \uadf8 \uc2a4\ud06c\ub9bd\ud2b8 \uc548\uc5d0\uc11c \u2014 \ub85c\uadf8\ub97c \ub4a4\uc9c0\uace0, \uc124\uc815 \ud30c\uc77c\uc744 \uace0\uce58\uace0, CSV\uc758 \uc5b4\ub5a4 \uc5f4\uc744 \ud569\uc0b0\ud558\ub294 \u2014 \ud14d\uc2a4\ud2b8 \uc791\uc5c5\uc744 \ud558\ub824\uba74 \uc774 \uc138 \ub3c4\uad6c\uac00 \uac70\uc758 \ub2e4\uc785\ub2c8\ub2e4. <strong>grep(\ucc3e\uae30) \u00b7 sed(\ubc14\uafb8\uae30) \u00b7 awk(\uc5f4\ub85c \uc790\ub974\uace0 \uacc4\uc0b0)<\/strong>. \uc14b \ub2e4 \uc791\uc740 \ub3c4\uad6c\uc9c0\ub9cc, <code>|<\/code> \ub85c \uc5ee\uc73c\uba74 \uc5b4\ub9c8\uc5b4\ub9c8\ud569\ub2c8\ub2e4.<\/p>\n    <div class=\"notice\"><b>\uba3c\uc800:<\/b> 7\ud3b8(\ud14d\uc2a4\ud2b8 \uba85\ub839\uc5b4 \u2014 grep \ub9db\ubcf4\uae30)\u00b712\ud3b8(\ud30c\uc774\ud504)\u00b722\ud3b8(\uc2a4\ud06c\ub9bd\ud2b8)\uc744 \ubd24\ub2e4\uba74 \uc774\uc5b4\uc9d1\ub2c8\ub2e4. \ubaa8\ub4e0 \uc608\uc81c\ub294 \uc5f0\uc2b5\uc6a9 \ud30c\uc77c\uc5d0 \uc548\uc804\ud558\uac8c \ud574\ubcfc \uc218 \uc788\uc5b4\uc694(<code>sed -i<\/code> \uac19\uc740 &#8220;\ud30c\uc77c \uc9c1\uc811 \uc218\uc815&#8221;\ub9cc \ubc31\uc5c5 \uc8fc\uc758 \u2014 \ubcf8\ubb38\uc5d0\uc11c \ub2e4\ub8f8). \uc21c\uc11c \u2014 <strong>\u2460 grep \ucc3e\uae30 \u2192 \u2461 sed \ubc14\uafb8\uae30 \u2192 \u2462 awk \uc5f4\u00b7\uacc4\uc0b0 \u2192 \u2463 \uc14b\uc744 \ud30c\uc774\ud504\ub85c \uc5ee\uae30<\/strong>.<\/div>\n  <\/div>\n\n  <h2>grep \u2014 \ucc3e\uae30<\/h2>\n  <p>\uac00\uc7a5 \ub9ce\uc774 \uc4f0\ub294 \ub3c4\uad6c. <code>grep \"\ud328\ud134\" \ud30c\uc77c<\/code> \u2014 \ud328\ud134\uc774 \ub4e4\uc5b4 \uc788\ub294 \uc904\ub9cc \ucd9c\ub825\ud569\ub2c8\ub2e4.<\/p>\n  <div class=\"cmd\"><span class=\"o\">$<\/span> grep <span class=\"t\">&#8220;ERROR&#8221;<\/span> app.log          <span class=\"o\"># ERROR \uac00 \ub4e4\uc5b4\uac04 \uc904<\/span>\n<span class=\"o\">$<\/span> grep -i <span class=\"t\">&#8220;error&#8221;<\/span> app.log         <span class=\"o\"># -i: \ub300\uc18c\ubb38\uc790 \ubb34\uc2dc (ERROR\/Error\/error \ub2e4)<\/span>\n<span class=\"o\">$<\/span> grep -v <span class=\"t\">&#8220;DEBUG&#8221;<\/span> app.log         <span class=\"o\"># -v: \ud328\ud134\uc774 &#8220;\uc5c6\ub294&#8221; \uc904\ub9cc<\/span>\n<span class=\"o\">$<\/span> grep -n <span class=\"t\">&#8220;TODO&#8221;<\/span> *.py             <span class=\"o\"># -n: \uc904 \ubc88\ud638 \uac19\uc774, \uc5ec\ub7ec \ud30c\uc77c\uc774\uba74 \ud30c\uc77c\uba85\ub3c4<\/span>\n<span class=\"o\">$<\/span> grep -rn <span class=\"t\">&#8220;api_key&#8221;<\/span> .              <span class=\"o\"># -r: \ud3f4\ub354 \uc548 \uc804\ubd80 \uc7ac\uadc0\ub85c<\/span>\n<span class=\"o\">$<\/span> grep -c <span class=\"t\">&#8220;200&#8221;<\/span> access.log         <span class=\"o\"># -c: \ub9e4\uce58 \uc904 &#8220;\uac1c\uc218&#8221;\ub9cc<\/span><\/div>\n  <p><strong>\uc815\uaddc\uc2dd<\/strong>\uc744 \uc54c\uba74 \ub354 \uac15\ud574\uc9d1\ub2c8\ub2e4. \uae30\ubcf8 \uba54\ud0c0\ubb38\uc790: <code>^<\/code>(\uc904 \uc2dc\uc791) <code>$<\/code>(\uc904 \ub05d) <code>.<\/code>(\uc544\ubb34 \ud55c \uae00\uc790) <code>*<\/code>(\uc55e \ubb38\uc790 0\ud68c \uc774\uc0c1) <code>[0-9]<\/code>(\uc22b\uc790 \ud55c \uc790) <code>[a-zA-Z]<\/code>(\uc601\ubb38 \ud55c \uc790). \uadf8\ub9ac\uace0 <code>-E<\/code>(\ud655\uc7a5 \uc815\uaddc\uc2dd)\ub97c \ubd99\uc774\uba74 <code>|<\/code>(\ub610\ub294) <code>+<\/code>(1\ud68c \uc774\uc0c1) <code>?<\/code>(0~1\ud68c) <code>()<\/code>(\uadf8\ub8f9) <code>{2,4}<\/code>(\ubc18\ubcf5 \ud69f\uc218)\uae4c\uc9c0 \uc4f8 \uc218 \uc788\uc5b4\uc694:<\/p>\n  <div class=\"cmd\"><span class=\"o\">$<\/span> grep <span class=\"t\">&#8220;^ERROR&#8221;<\/span> app.log           <span class=\"o\"># \uc904\uc774 ERROR \ub85c \uc2dc\uc791<\/span>\n<span class=\"o\">$<\/span> grep -E <span class=\"t\">&#8220;ERROR|WARN|FATAL&#8221;<\/span> app.log <span class=\"o\"># \uc14b \uc911 \ud558\ub098\ub77c\ub3c4<\/span>\n<span class=\"o\">$<\/span> grep -oE <span class=\"t\">&#8220;[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+&#8221;<\/span> access.log <span class=\"o\"># -o: \ub9e4\uce58\ud55c \ubd80\ubd84\ub9cc \u2192 IP \ucd94\ucd9c<\/span><\/div>\n  <div class=\"databox\"><b>\uc790\uc8fc \uc4f0\ub294 \uc870\ud569:<\/b> <code>grep -i<\/code>(\ub300\uc18c\ubb38\uc790 \ubb34\uc2dc) \u00b7 <code>grep -v<\/code>(\uc81c\uc678) \u00b7 <code>grep -rn<\/code>(\ucf54\ub4dc \uc804\uccb4\uc5d0\uc11c \ucc3e\uae30) \u00b7 <code>grep -c<\/code>(\uac1c\uc218) \u00b7 <code>grep -oE<\/code>(\ucd94\ucd9c). \uadf8\ub9ac\uace0 \ub2e4\ub978 \uba85\ub839\uc758 \ucd9c\ub825\uc744 \uac70\ub97c \ub550 \ud30c\uc774\ud504\ub85c \u2014 <code>ps aux | grep nginx<\/code>, <code>history | grep ssh<\/code> \ucc98\ub7fc. 12\ud3b8\uc758 <code>|<\/code> \uac00 \uc5ec\uae30\uc11c \ube5b\ub0a9\ub2c8\ub2e4.<\/div>\n\n  <h2>sed \u2014 \ubc14\uafb8\uae30\u00b7\uc9c0\uc6b0\uae30<\/h2>\n  <p>sed\uc758 90%\ub294 \uce58\ud658\uc785\ub2c8\ub2e4: <code>sed 's\/\ucc3e\uc744\uac83\/\ubc14\uafc0\uac83\/'<\/code>. \uc2ac\ub798\uc2dc\uac00 \uad6c\ubd84\uc790\uc608\uc694(\ub2e4\ub978 \ubb38\uc790\ub3c4 \ub428: <code>s|a|b|<\/code>).<\/p>\n  <div class=\"cmd\"><span class=\"o\">$<\/span> echo <span class=\"t\">&#8220;hello world&#8221;<\/span> | sed <span class=\"t\">&#8216;s\/world\/\ub9ac\ub205\uc2a4\/&#8217;<\/span>   <span class=\"o\"># \u2192 hello \ub9ac\ub205\uc2a4<\/span>\n<span class=\"o\">$<\/span> sed <span class=\"t\">&#8216;s\/DEBUG=false\/DEBUG=true\/&#8217;<\/span> .env       <span class=\"o\"># \uccab \ub9e4\uce58\ub9cc (\ud55c \uc904\uc5d0 \ud55c \ubc88)<\/span>\n<span class=\"o\">$<\/span> sed <span class=\"t\">&#8216;s\/ \/_\/g&#8217;<\/span> names.txt                  <span class=\"o\"># g: \uc904\ub9c8\ub2e4 \ubaa8\ub4e0 \uacf5\ubc31\uc744 _ \ub85c<\/span>\n<span class=\"o\">$<\/span> sed <span class=\"t\">&#8216;s\/^#\/\/&#8217;<\/span> config.conf                  <span class=\"o\"># \uc904 \ub9e8 \uc55e # \uc9c0\uc6b0\uae30 (\uc8fc\uc11d \ud574\uc81c)<\/span>\n<span class=\"o\">$<\/span> sed -n <span class=\"t\">&#8216;5p&#8217;<\/span> file.txt                        <span class=\"o\"># -n + p: 5\ubc88\uc9f8 \uc904\ub9cc \ucd9c\ub825<\/span>\n<span class=\"o\">$<\/span> sed <span class=\"t\">&#8216;2d&#8217;<\/span> file.txt                            <span class=\"o\"># 2\ubc88\uc9f8 \uc904 \uc0ad\uc81c(\ucd9c\ub825\uc5d0\uc11c)<\/span>\n<span class=\"o\">$<\/span> sed <span class=\"t\">&#8216;\/^$\/d&#8217;<\/span> file.txt                         <span class=\"o\"># \ube48 \uc904(^$) \ubaa8\ub450 \uc0ad\uc81c<\/span>\n<span class=\"o\">$<\/span> sed <span class=\"t\">&#8216;\/DEBUG\/d&#8217;<\/span> app.log                       <span class=\"o\"># DEBUG \ub4e4\uc5b4\uac04 \uc904 \uc0ad\uc81c<\/span><\/div>\n  <div class=\"warnbox\"><strong>\u26a0\ufe0f <code>sed -i<\/code> \ub294 \ud30c\uc77c\uc744 \uc9c1\uc811 \uace0\uce69\ub2c8\ub2e4 \u2014 \ub418\ub3cc\ub9b4 \uc218 \uc5c6\uc5b4\uc694.<\/strong> \ubc18\ub4dc\uc2dc \ubc31\uc5c5\uacfc \ud568\uaed8: <code>sed -i.bak 's\/old\/new\/' file<\/code> \u2192 <code>file.bak<\/code> \uc774 \uc0dd\uae30\uace0 <code>file<\/code> \uc774 \uc218\uc815\ub429\ub2c8\ub2e4. \ub610\ub294 \uba3c\uc800 <code>-i<\/code> \uc5c6\uc774 \ub3cc\ub824\uc11c \ucd9c\ub825\uc73c\ub85c \ud655\uc778\ud55c \ub2e4\uc74c\uc5d0\ub9cc. <code>rm -rf<\/code> \ub9cc\ud07c\uc774\ub098 <code>sed -i<\/code> \ub3c4 &#8220;\ud55c \ubc88 \ub354 \uc0dd\uac01&#8221;\uc774 \ud544\uc694\ud55c \uba85\ub839\uc785\ub2c8\ub2e4(6\ud3b8 \ucc38\uace0).<\/div>\n\n  <h2>awk \u2014 \uc5f4\ub85c \uc790\ub974\uace0 \uacc4\uc0b0<\/h2>\n  <p>awk\ub294 \uc904\uc744 <strong>\uacf5\ubc31 \uae30\uc900\uc73c\ub85c \uc5f4\ub85c \ucabc\uac1c<\/strong> \uc90d\ub2c8\ub2e4. <code>$1<\/code>=\uccab \uc5f4, <code>$2<\/code>=\ub458\uc9f8 \uc5f4, \u2026 <code>$0<\/code>=\uc904 \uc804\uccb4. \ucf64\ub9c8 \uad6c\ubd84\uc774\uba74 <code>-F','<\/code>:<\/p>\n  <div class=\"cmd\"><span class=\"o\">$<\/span> awk <span class=\"t\">&#8216;{print $1}&#8217;<\/span> access.log          <span class=\"o\"># \uac01 \uc904\uc758 \uccab \uc5f4\ub9cc (\ubcf4\ud1b5 IP)<\/span>\n<span class=\"o\">$<\/span> awk <span class=\"t\">&#8216;{print $1, $4}&#8217;<\/span> access.log       <span class=\"o\"># 1\uc5f4\uacfc 4\uc5f4 (\ucf64\ub9c8 = \uacf5\ubc31\uc73c\ub85c \uad6c\ubd84 \ucd9c\ub825)<\/span>\n<span class=\"o\">$<\/span> awk -F<span class=\"t\">&#8216;:&#8217; &#8216;{print $1}&#8217;<\/span> \/etc\/passwd   <span class=\"o\"># : \uad6c\ubd84 \u2192 \uc0ac\uc6a9\uc790 \uc774\ub984 \ubaa9\ub85d<\/span>\n<span class=\"o\">$<\/span> awk -F<span class=\"t\">&#8216;,&#8217; &#8216;NR>1 {print $2}&#8217;<\/span> data.csv  <span class=\"o\"># NR=\uc904\ubc88\ud638, NR>1 \u2192 \ud5e4\ub354 \ube7c\uace0 2\uc5f4<\/span>\n<span class=\"o\">$<\/span> awk <span class=\"t\">&#8216;$3 > 100&#8217;<\/span> sales.txt              <span class=\"o\"># 3\uc5f4\uc774 100 \ucd08\uacfc\uc778 \uc904\ub9cc (\uc870\uac74\ub9cc \uc4f0\uba74 \uadf8 \uc904 \ucd9c\ub825)<\/span>\n<span class=\"o\">$<\/span> awk <span class=\"t\">&#8216;{sum += $2} END {print sum}&#8217;<\/span> sales.csv  <span class=\"o\"># 2\uc5f4 \ub2e4 \ub354\ud574\uc11c, \ub05d\uc5d0 \ud569\uacc4 \ucd9c\ub825<\/span>\n<span class=\"o\">$<\/span> awk <span class=\"t\">&#8216;\/ERROR\/ {c++} END {print c}&#8217;<\/span> app.log    <span class=\"o\"># ERROR \uc904 \uac1c\uc218 (grep -c \uc640 \uac19\uc9c0\ub9cc \ub354 \uc720\uc5f0)<\/span><\/div>\n  <p>\ud328\ud134\uc740 <code>{ \ub3d9\uc791 }<\/code> \uc55e\uc5d0 \ubd99\uc73c\uba74 &#8220;\uadf8 \ud328\ud134 \uc904\uc5d0\uc11c\ub9cc \ub3d9\uc791&#8221;, <code>BEGIN {}<\/code>\u00b7<code>END {}<\/code> \ub294 \uc2dc\uc791\u00b7\ub05d\uc5d0 \ud55c \ubc88. \ubcc0\uc218\ub294 \uadf8\ub0e5 \uc4f0\uba74 \ub428(\uc790\ub3d9 0\/\ube48\uac12). \uc0ac\uc2e4\uc0c1 \uc791\uc740 \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\ub77c, \uc14b \uc911 \uc81c\uc77c \uac15\ub825\ud558\uc9c0\ub9cc \uadf8\ub9cc\ud07c \ubc30\uc6b8 \uac8c \ub9ce\uc544\uc694 \u2014 \uc704 \ud328\ud134 \ub300\uc5ec\uc12f \uac1c\ub9cc \uc54c\uc544\ub3c4 \uc77c\uc0c1\uc758 90%\ub294 \ub429\ub2c8\ub2e4.<\/p>\n\n  <h2>\uc14b\uc744 \ud30c\uc774\ud504\ub85c \uc5ee\uae30 \u2014 \uadf8\ub9ac\uace0 \uc815\ub9ac<\/h2>\n  <p>\uc9c4\uc9dc \ud798\uc740 \uc870\ud569\uc785\ub2c8\ub2e4. <code>grep<\/code> \uc73c\ub85c \uac70\ub974\uace0 \u2192 <code>awk<\/code> \ub85c \uc5f4\uc744 \ubf51\uace0 \u2192 <code>sort | uniq -c | sort -rn<\/code> \uc73c\ub85c \uc9d1\uacc4:<\/p>\n  <div class=\"cmd\"><span class=\"o\"># \ub85c\uadf8\uc5d0\uc11c \uac00\uc7a5 \ub9ce\uc774 \ub09c ERROR \uc720\ud615 Top<\/span>\n<span class=\"o\">$<\/span> grep <span class=\"t\">&#8220;ERROR&#8221;<\/span> app.log | awk <span class=\"t\">&#8216;{print $4}&#8217;<\/span> | sort | uniq -c | sort -rn\n<span class=\"o\">     42 timeout<\/span>\n<span class=\"o\">     17 db_conn<\/span>\n<span class=\"o\">      9 auth<\/span>\n\n<span class=\"o\"># \uc811\uc18d \ub85c\uadf8\uc5d0\uc11c IP\ubcc4 \uc694\uccad \uc218 Top 10<\/span>\n<span class=\"o\">$<\/span> awk <span class=\"t\">&#8216;{print $1}&#8217;<\/span> access.log | sort | uniq -c | sort -rn | head -10\n\n<span class=\"o\"># CSV(\ucf64\ub9c8)\uc5d0\uc11c 2\uc5f4(\uae08\uc561) \ud569\uacc4, \ub2e8 \ud5e4\ub354 \uc81c\uc678<\/span>\n<span class=\"o\">$<\/span> awk -F<span class=\"t\">&#8216;,&#8217; &#8216;NR>1 {s+=$2} END {print &#8220;\ud569\uacc4:&#8221;, s}&#8217;<\/span> sales.csv\n\n<span class=\"o\"># \uc124\uc815 \ud30c\uc77c\uc5d0\uc11c \uc8fc\uc11d\u00b7\ube48 \uc904 \ube7c\uace0 \uc2e4\uc81c \uc124\uc815\ub9cc \ubcf4\uae30<\/span>\n<span class=\"o\">$<\/span> grep -v <span class=\"t\">&#8216;^#&#8217;<\/span> nginx.conf | sed <span class=\"t\">&#8216;\/^$\/d&#8217;<\/span><\/div>\n  <div class=\"tablewrap\">\n  <table>\n    <thead><tr><th>\uc774\ub7f4 \ub550<\/th><th>\uc774 \ub3c4\uad6c<\/th><\/tr><\/thead>\n    <tbody>\n      <tr><td>\ud2b9\uc815 \ud328\ud134\uc774 \uc788\ub294 \uc904 \ucc3e\uae30 \/ \uc81c\uc678 \/ \uac1c\uc218 \/ \ucd94\ucd9c<\/td><td data-label=\"\uc774 \ub3c4\uad6c\"><code>grep<\/code> (`-i -v -n -r -c -oE`)<\/td><\/tr>\n      <tr><td>\ubb38\uc790\uc5f4 \uce58\ud658 \/ \uc904 \uc0ad\uc81c \/ \ud2b9\uc815 \uc904\ub9cc<\/td><td data-label=\"\uc774 \ub3c4\uad6c\"><code>sed<\/code> (`s\/\/\/ g`, `\/\ud328\ud134\/d`, `-n Np`) \u2014 <code>-i<\/code>\ub294 \ubc31\uc5c5 \ud544\uc218<\/td><\/tr>\n      <tr><td>\uc5f4(\ud544\ub4dc)\ub85c \uc798\ub77c \ucd9c\ub825 \/ \uc870\uac74 \/ \ud569\uacc4\u00b7\uce74\uc6b4\ud2b8<\/td><td data-label=\"\uc774 \ub3c4\uad6c\"><code>awk<\/code> (`$1 $0`, `-F`, `NR`, `\uc870\uac74`, `{s+=$n}END{}`)<\/td><\/tr>\n    <\/tbody>\n  <\/table>\n  <\/div>\n  <div class=\"roadmap\">\n    <h3>\uc2dc\ub9ac\uc988 \ud750\ub984<\/h3>\n    <ol>\n      <li>1~22\ud3b8 \uc785\ubb38~\uace0\uae09(\uc2a4\ud06c\ub9bd\ud2b8) \u2714 &nbsp; <strong>23\ud3b8 \ud14d\uc2a4\ud2b8 \ucc98\ub9ac 3\uc885 grep\u00b7sed\u00b7awk (\uc774 \uae00)<\/strong> \u2714<\/li>\n      <li>24\ud3b8 \u2014 \ub85c\uadf8\uc640 \ubaa8\ub2c8\ud130\ub9c1(<code>\/var\/log<\/code>\u00b7<code>journalctl<\/code>\u00b7<code>logrotate<\/code>\u00b7\uc790\uc6d0 \ubcf4\uae30) \u2014 \uc624\ub298 \ubc30\uc6b4 grep\u00b7awk \uac00 \uac70\uae30\uc11c \uadf8\ub300\ub85c \uc4f0\uc784<\/li>\n      <li>25\ud3b8 \u2014 \uc11c\ubc84 \ubcf4\uc548 \ud558\ub4dc\ub2dd &nbsp; 26\ud3b8 \u2014 \ub3c4\ucee4 \uc785\ubb38 (\uc644\uacb0)<\/li>\n    <\/ol>\n  <\/div>\n  <p>\uc815\ub9ac\ud558\uba74 \u2014 grep\uc740 &#8220;\ucc3e\ub294\ub2e4&#8221;, sed\ub294 &#8220;\ubc14\uafbc\ub2e4&#8221;, awk\ub294 &#8220;\uc5f4\ub85c \uc790\ub974\uace0 \uc13c\ub2e4&#8221;. \uc14b \ub2e4 \ud45c\uc900\uc73c\ub85c \uae54\ub824 \uc788\uace0, <code>|<\/code> \ub85c \uc5ee\uc73c\uba74 GUI \ub3c4\uad6c \uc5c6\uc774\ub3c4 \ub85c\uadf8\u00b7\ub370\uc774\ud130\ub97c \uc790\uc720\uc790\uc7ac\ub85c \ub2e4\ub8f9\ub2c8\ub2e4. \uc704 \ud328\ud134\ub4e4\uc744 \uc5f0\uc2b5\uc6a9 \ud30c\uc77c\uc5d0 \ud55c \ubc88\uc529 \uccd0\ubcf4\uc138\uc694 \u2014 \uc190\uc5d0 \ubd99\uc73c\uba74 &#8220;\uc5d1\uc140 \uc5f4\uc5b4\uc11c \ud55c\ucc38 \ub9cc\uc9c0\ub358&#8221; \uc77c\uc774 \ud55c \uc904\uc774 \ub429\ub2c8\ub2e4. 24\ud3b8\uc5d0\uc11c\ub294 \uc774 \ub3c4\uad6c\ub4e4\uc744 \ub4e4\uace0 \uc2e4\uc81c \ub85c\uadf8\ub97c \ubd84\uc11d\ud558\uace0 \uc2dc\uc2a4\ud15c \uc0c1\ud0dc\ub97c \ubcf4\ub294 \ubc95\uc744 \ub2e4\ub8f9\ub2c8\ub2e4.<\/p>\n\n  <p style=\"font-size:15px;color:#64748b;\">\ucc38\uace0: \ubcf8 \uae00\uc740 \uc6b0\ubd84\ud22c \uae30\ubcf8 \ub3c4\uad6c(GNU grep\/sed\/gawk) \uae30\uc900\uc774\uba70 2026\ub144 5\uc6d4 13\uc77c\uc5d0 \uc791\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4. <code>-E<\/code>(\ud655\uc7a5 \uc815\uaddc\uc2dd)\u00b7<code>-i<\/code> \ub3d9\uc791\uc740 macOS\uc758 BSD \ubc84\uc804\uacfc \ub2e4\ub97c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n  <div class=\"cta\">\n    <h3>\uc6b0\ubd84\ud22c\u00b7\ub9ac\ub205\uc2a4 \uc785\ubb38 \uc2dc\ub9ac\uc988<\/h3>\n    <p>\ucc3e\uace0\u00b7\ubc14\uafb8\uace0\u00b7\uacc4\uc0b0\ud558\ub294 \uc138 \ub3c4\uad6c \u2014 23\ud3b8\uc785\ub2c8\ub2e4. 24\ud3b8 &#8220;\ub85c\uadf8\uc640 \ubaa8\ub2c8\ud130\ub9c1&#8221;\uc73c\ub85c \uc774\uc5b4\uc9d1\ub2c8\ub2e4(\uac70\uae30\uc11c \uc774 grep\u00b7awk \uac00 \uadf8\ub300\ub85c \uc4f0\uc5ec\uc694).<\/p>\n    <p>\ub2e4\uc74c \ud3b8\uc740 <a href=\"https:\/\/junai.ai\/blog\" target=\"_blank\" rel=\"noopener\">junai.ai\/blog<\/a> \uc5d0\uc11c \u2014 26\ud3b8\uae4c\uc9c0 \ucc28\ub840\ub85c \uc62c\ub77c\uc635\ub2c8\ub2e4.<\/p>\n  <\/div>\n\n<\/article>\n<\/div>\n\n<footer>\n  <div class=\"wrap\">\u00a9 2026 JUNAI \u00b7 \uc6b0\ubd84\ud22c\u00b7\ub9ac\ub205\uc2a4 \uc785\ubb38 \uc2dc\ub9ac\uc988 23\ud3b8 \u00b7 \ubcf8 \uae00\uc740 2026\ub144 5\uc6d4 13\uc77c \uae30\uc900\uc73c\ub85c \uc791\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/div>\n<\/footer>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>grep\uc73c\ub85c \ucc3e\uace0 sed\ub85c \ubc14\uafb8\uace0 awk\ub85c \uc5f4\uc744 \uacc4\uc0b0 \u2014 \ub85c\uadf8\u00b7CSV\u00b7\uc124\uc815 \ud30c\uc77c\uc744 \uba85\ub839 \ud55c \uc904\ub85c. \uc635\uc158\u00b7\uc815\uaddc\uc2dd\u00b7\ud30c\uc774\ud504\ub85c \uc5ee\uae30\uae4c\uc9c0. \ub9ac\ub205\uc2a4 \uc785\ubb38 23\ud3b8.<\/p>\n","protected":false},"author":1,"featured_media":203,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[],"class_list":["post-209","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ubuntu-linux"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/posts\/209","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/comments?post=209"}],"version-history":[{"count":0,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/posts\/209\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/media\/203"}],"wp:attachment":[{"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/media?parent=209"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/categories?post=209"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/tags?post=209"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}