[http://www.vectorsite.net/tsawk.html An Awk Primer] ---------- ||[[TableOfContents]]|| awk´Â ¸í·É¾î¸¦ »ç¿ëÇÏ´Ùº¸¸é, ÀÇ¿Ü·Î ÀÚÁÖ¾²´Âµ¥, Áö±Ý±îÁö ¾óÃß ¸ÂÃç¼­ ¾²´Ù°¡ ¹®¼­´Â ã¾Ò½À´Ï´Ù¸¸, À§Å°¿¡ ¾ø¾î¼­ ãÀº°ÍµéÀ» Á¤¸®Çؼ­ ±ÛÀ» ¾¹´Ï´Ù. °ø°³µÇ¾îÀÖ´Â ¹®¼­¸¦ ã¾Æ¼­ Ç߱⿡, Àý´ë âÀÛ¹®¼­°¡ ¾Æ´Õ´Ï´Ù. Á¶±Ý ±æ¾îÁö´Ù º¸´Ï.. Çü½ÄÀÌ ¸¶±¸ Ʋ¾îÁö°í, Å×ÀÌºí ¹«¼­Áö°í ÀÖ½À´Ï´Ù... ±×·±µ¥, À§Å°Ãʺ¸¶ó¼­ Àâ±â°¡ ¸Å¿ì Èûµé±º¿ä... Á».. µµ¿ÍÁÖ¼¼¿ä ¤Ð.¤Ð --maylinux == Awk¶õ? == awk´Â ÇÁ·Î±×·¥ ÅøÀÌ´Ù. ÀÌ ÅøÀº »ó´çÈ÷ ¹è¿ì±â ½±°í, »ç¿ëÇϱⰡ Æí¸®ÇÏ´Ù. ¿Ö ±×·²±î? awk´Â ±âº»ÀûÀ¸·Î µ¥ÀÌÅÍ Ã³¸®¸¦ À§ÇÑ »ó´çÈ÷ Àß ¸¸µé¾îÁø ÇÁ·Î±×·¡¹Ö ¸ðµ¨À» °¡Áö°í ÀÖ´Ù. ÀÌ ¸»Àº µ¹·Á¼­ ¾ê±âÇÑ´Ù¸é, ÀϹÝÀûÀÎ ÇÁ·Î±×·¥À» Â¥±â¿¡´Â ºÒÆíÇÏ´Ù´Â ¾ê±â°¡ µÉ¼ö ÀÖ´Ù. Áï perl¿¡¼­ Áö¿øÇÏ´Â ¿©·¯°¡Áö API ÇÔ¼ö¸¦ ÀÌ¿ëÇÑ ÇÁ·Î±×·¥À̳ª, º¹ÀâÇÑ Á¤±ÔÇ¥Çö½ÄÀ» ó¸®Çϱ⿡´Â ¸¹Àº ¾î·Á¿òÀÌ ÀÖ´Ù´Â °ÍÀÌ´Ù. Áï, awk´Â awk ³ª¸§´ë·ÎÀÇ ¿ëµµ¶ó´Â °ÍÀÌ ÀÖ´Ù´Â ¸»ÀÌ´Ù. ¹°·Ð awk °¡Áö°íµµ ¿©·¯°¡Áö º¹ÀâÇÑ ÀÏ¹Ý ÇÁ·Î±×·¡¹ÖÀÌ °¡´ÉÇÏÁö¸¸, ¼ÖÁ÷È÷ ÀÌ·¯ÇÑ °ÍÀ» ó¸®ÇÒ¶§¿¡´Â awk º¸´Ù´Â ´Ù¸¥ ÇÁ·Î±×·¥À» »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù. ÀÏ´Ü °£´ÜÈ÷ ¾ê±âÇÏÀÚ¸é, awk´Â µ¥ÀÌÅÍ ¾ç½ÄÀÇ ¹®¼­³ª ¶Ç´Â ÀڷḦ ó¸®ÇÏ¿© ´Ù¸¥ ÇüÅÂÀÇ ¹®¼­ ¶Ç´Â °á°ú¹°À» Ãâ·ÂÇϴµ¥ ¾²ÀδÙ. ½ÇÁ¦·Î awkÀÇ ÇÁ·Î±×·¥ µ¿ÀÛ ¸ðµ¨Àº ÀÌ°ÍÀ» À§ÇØ ¾ÆÁÖ Àß ¸¸µé¾îÁ® ÀÖ´Ù. ¹¹, Àß ¸¸µé¾îÁ® ÀÖ´ÂÁö ¾Æ´ÑÁö´Â ´ÙÀ½ÀÇ ±ÛµéÀ» Àоî¾ß ¾Ë°ÚÁö¸¸, ÀÏ´ÜÀº ±×·¸´Ù´Â °É ±â¾ïÇصα⠹ٶõ´Ù. == awkÀÇ ±¸Á¶(Model) == awk´Â À§¿¡¼­ ¾ð±ÞÇÑ ¹Ù¿Í °°ÀÌ µ¥ÀÌÅÍ Ã³¸®¸¦ À§ÇØ ÃÖÀûÈ­µÇ¾î ÀÖ´Ù°í Çß´Ù. ±×·¯¸é, ¾î¶°ÇÑ ¸ðµ¨ÀÌ µ¥ÀÌÅÍ Ã³¸®¿¡ ÀûÇÕÇÑ °ÍÀϱî? ÀÏ´Ü ¾Æ·¡ÀÇ ³»¿ëÀ» º¸°í ³ª¼­ °è¼Ó ¼³¸íÇÏ°Ú´Ù. 1. ½ÃÀÛ(BEGIN) : ÀԷµ¥ÀÌÅ͸¦ ½ÇÇàÇϱ⿡ ÀûÇÕÇÑ ÇüÅ·Π¹Ù²Ù¾îÁÖ´Â ´Ü°èÀÌ´Ù. ÇÁ·Î±×·¥ÀûÀÎ ¸»·Î´Â preprocess¶ó°í ÇÑ´Ù. 2. ½ÇÇà(Routine) : ![½ÃÀÛ ´Ü°è]¿¡¼­ Àß Ã³¸®µÈ(Á¤±ÔÈ­µÈ) µ¥ÀÌÅ͸¦ ½ÇÁ¦ ·çƾÀ¸·Î ó¸®ÇÏ´Â °ÍÀÌ´Ù. ¿©±â¼­ µ¥ÀÌÅʹ ó¸® ·çƾ¿¡ µû¶ó 󸮰¡ µÇ¸ç, ÀԷ°ªÀÌ ·çƾÀ» °ÅÃÄ °á°ú°ªÀÌ ³ª¿À°Ô µÈ´Ù. 3. ³¡(END) : ![½ÃÀÛ ´Ü°è]¿Í ¸¶Âù°¡Áö·Î, µ¥ÀÌÅÍ°¡ ó¸®µÈ ÈÄ¿¡ ó¸®ÇØ¾ß ÇÒ ³»¿ëµéÀ» ´ã°í ÀÖ´Ù. °á°úÀÇ Ãß°¡ Ãâ·ÂµéÀ» ¿¹·Î µé ¼ö ÀÖ´Ù. == awk ÇÁ·Î±×·¥ == === ÀϹÝÀûÀÎ awk ÀÇ ¿ëµµ ¹× »ç¿ë¹æ¹ý(Using Model) === awk´Â ÀϹÝÀûÀ¸·Î µ¥ÀÌÅÍ ¶Ç´Â À¯»ç µ¥ÀÌÅ;ç½ÄÀÇ ÆÄÀÏ ¹× ÀڷḦ ó¸®Çϴµ¥ ¾²ÀδÙ. ¿¹¸¦ µé¾î Åë°è Àڷᳪ, text Çü½ÄÀÇ access(MicroSoft), ½ÇÇè½ÄÀÇ °è»ê °á°ú µîÀ» Åë°è¸¦ ³½´Ù´øÁö ºñ±³ ºÐ¼® ÇÑ´Ù´øÁö ´Ù¸¥ ÇüÅÂÀÇ ¹®¼­(°á°ú¹°)·Î º¯È¯ÇÏ´Â µîÀÇ ÀÛ¾÷¿¡ »ç¿ëµÈ´Ù. µû¶ó¼­ ÀÌ·¯ÇÑ ÀÛ¾÷¿¡ À־ awk´Â 100%ÀÇ ÀÛ¾÷È¿À²À» °¡Á®¿Ã¼ö ÀÖ´Ù. ¹°·Ð perlÀ̳ª, À¯»çÇÁ·Î±×·¥À» »ç¿ëÇصµ ÁÁÁö¸¸, Ưº°ÇÏ°Ô º¹ÀâÇÑ ±¸Á¶¸¦ °¡ÁöÁö ¾Ê´Â´Ù¸é, ±»ÀÌ "Åä³¢ Àâ´Âµ¥, ¼ÒÀâ´Â Ä®À» ¾µ ÀÌÀ¯´Â ¾ø´Ù"´Â °ÍÀÌ´Ù. awk¸¸À¸·Î ÃæºÐÇϸç, ¶ÇÇÑ sed³ª ´Ù¸¥ GNU À¯Æ¿À» º´ÇÕÇÏ¿© »ç¿ëÇÏ´Â °ÍÀÌ ´ÜÀÏ perl ÇÁ·Î±×·¥À̳ª, ±âŸ µ¥ÀÌÅÍ Ã³¸® ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ »ç¿ëÇÏ´Â °Íº¸´Ù ÈξÀ ³´±â ¶§¹®ÀÌ´Ù. °³ÀÎÀûÀÎ °üÁ¡À¸·Î´Â GNU À¯Æ¿µéÀº »ó´çÈ÷ À¯¿¬ÇÏ°í(flexible)ÇÏ°í, °£ÆíÇÏÁö¸¸, ½ÇÁ¦ÀûÀ¸·Î °³°³ÀÇ GNU À¯Æ¿·Î ÀÛ¾÷À» Çϱ⿡´Â »ó´çÈ÷ ÈûÀÌ µç´Ù. ±×·¯³ª, À̵é GNU À¯Æ¿µéÀ» ÀûÀýÇÏ°Ô Á¶ÇÕÇÏ¿© »ç¿ëÇϸé, ±âÁ¸ÀÇ ¿©Å¸ ÇÁ·Î±×·¥µé°ú µ¿µîÇÑ ±â´ÉÀ» ¹ßÈÖÇÏ´Â ¸ÚÁø ÇÁ·Î±×·¥ÀÌ µÉ ¼ö ÀÖ´Â °ÍÀÌ´Ù. ±×·¡¼­ º¸ÅëÀÇ ÀÛ¾÷Àº awk Çϳª¸¸ °¡Áö°í, ¸ðµÎ ´Ù ó¸®ÇÒ ¼ö°¡ ¾ø´Ù. ÇÏ°íÀÚ ÇÏ´Â ÀÏÀÇ ÀϺκÐÀ» awk°¡ ¸ÃÀ»¼ö ÀÖ´Â °ÍÀÌ´Ù. º¸ÅëÀÇ ÀϹÝÀûÀÎ awkÀÇ »ç¿ëÀº ´ÙÀ½°ú °°Àº ´Ü°è¸¦ °ÅÄ¡°Ô µÈ´Ù. 1. egrep ¹× grep À» ÀÌ¿ëÇÑ µ¥ÀÌÅÍ ÆÄÀÏÀÇ ±¸Á¶ È®ÀÎÀ» ÇÑ´Ù. 1. Á¤±ÔÈ­°¡ °¡´ÉÇÑÁö¸¦ È®ÀÎÇÏ°í, sed·Î Å×½ºÆ® Çغ»´Ù. awk°¡ ó¸®ÇÒ¸¸Å­ Á¤±ÔÈ­°¡ µÇ¾î ÀÖ´Ù¸é, ¹Ù·Î awk¸¦ »ç¿ëÇÑ´Ù. 1. sed·Î Á¤±ÔÈ­µÈ ¾ç½ÄÀ» awk·Î ó¸®ÇÑ´Ù. µ¥ÀÌÅÍÀÇ ¾ç½Ä µ¥ÀÌÅÍ´Â ÀϹÝÀûÀ¸·Î Record¿Í Fields¸¦ °¡Áø´Ù. ÀϹÝÀûÀ¸·Î ÇѶóÀÎ(ÇÑÁÙ)ÀÌ 1 record°¡ µÇ°í, FieldsÀÇ ±¸ºÐÀº "¡à"(°ø¹é¹®ÀÚ)¸¦ ±¸ºÐÀÚ·Î ÇÏ°Ô µÈ´Ù. (·¹ÄÚµå¿Í Çʵ忡 ´ëÇؼ­ ÀÌÇØ°¡ °¡Áö ¾Ê´Â »ç¶÷Àº DataBase¿¡ ´ëÇÑ °³¿ä µîÀ» Âü°íÇϱ⠹ٶõ´Ù.) ÀϹÝÀûÀ¸·Î awk°¡ ó¸®ÇÒ ¼ö ÀÖ´Â µ¥ÀÌÅÍÀÇ Çü½ÄÀº ´ÙÀ½°ú °°´Ù. ||¡á¡á¡á¡à¡á¡á¡á¡á¡à¡á¡á¡á¡à¡á¡á¡á¡à¡á¡á¡á¡á¡á¡á¡à¡á¡á¡á¡á|| ||¡á¡á¡á¡á¡à¡á¡á¡à¡á¡á¡á¡á¡á¡á¡á¡à¡á¡á¡á¡á¡à¡á¡á¡à¡á¡á¡á¡á|| ||¡á¡á¡à¡á¡á¡á¡á¡á¡á¡á¡á¡á¡à¡á¡á¡à¡á¡á¡à¡á¡á¡á¡á¡á¡á¡á¡á¡à¡á|| À§ÀÇ µ¥ÀÌÅÍ´Â ¾Æ·¡ÀÇ Çü½ÄÀ¸·Î ¹Ù²î°Ô µÈ´Ù. ||record1: ||¡á¡á¡á ||¡á¡á¡á¡á ||¡á¡á¡á ||¡á¡á¡á ||¡á¡á¡á¡á¡á¡á ||¡á¡á¡á¡á || ||record2: ||¡á¡á¡á¡á ||¡á¡á ||¡á¡á¡á¡á¡á¡á¡á ||¡á¡á¡á¡á ||¡á¡á ||¡á¡á¡á¡á || ||record3: ||¡á¡á ||¡á¡á¡á¡á¡á¡á¡á¡á¡á ||¡á¡á ||¡á¡á ||¡á¡á¡á¡á¡á¡á¡á¡á ||¡á || || ||Field 1 ||Field 2 ||Field 3 ||Field 4 ||Field 5 ||Field 6 || || ||$1 ||$2 ||$3 ||$4 ||$5 ||$6 || (À§ÀÇ Ç¥°¡ Àß ÀÌÇصÇÁö ¾Ê´Â´Ù¸é, DB ÀÔ¹®¼­ µîÀ» Àоµµ·Ï ÇÑ´Ù.) °¢ ¶óÀÎÀÌ ÇÑ ·¹Äڵ尡 µÇ¸ç, ½ºÆäÀ̽º·Î ºÐ¸®µÈ ¹®ÀÚ¿­ÀÌ Field(¶Ç´Â Column)À¸·Î ³ª´µ°Ô µÈ´Ù. ½ÇÁ¦·Î´Â ÇÑ ·¹Äڵ尡 ÇÑ ¶óÀΰú ÀÏÄ¡ÇÏÁö ¾ÊÀ» ¼öµµ ÀÖÀ¸¸ç, Field ¸¦ ±¸ºÐÇÏ´Â °Íµµ °ø¹é¹®ÀÚ°¡ ¾Æ´Ò¼öµµ ÀÖ´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½ÀÇ ¿¹Á¦¸¦ º¸¸é¼­ ÀÌÇظ¦ ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. === Example 1 - °£´ÜÇÑ awk »ç¿ë === {{{ # cat exam_result.dat ¹ÚÁ¾±Ô 95Á¡ À̾ï¿î 98Á¡ ÀÌÈÆ°­ 99Á¡ ¾ö¼º±â 100Á¡ Á¤¿µ¿ø 97Á¡ ¹Ú¿À±Ù 98Á¡ }}} ¿©±â¼­ °¢ ÁÙÀÌ ÇÑ ·¹Äڵ尡 µÈ´Ù. ±×¸®°í, "¹ÚÁ¾±Ô 95Á¡"À̶õ ³»¿ë¿¡¼­ "¹ÚÁ¾±Ô", "95Á¡"À̶õ ¹®ÀÚ¿­ÀÌ °¢°¢ÀÇ Çʵå(Ç׸ñ)°¡ µÇ´Â °ÍÀÌ´Ù. °£´ÜÈ÷ À̸§À» Ãâ·ÂÇØ º¸±â·Î ÇÏÀÚ {{{ # awk '{print $1}' exam_result.dat ¹ÚÁ¾±Ô À̾ï¿î ÀÌÈÆ°­ ¾ö¼º±â Á¤¿µ¿ø ¹Ú¿À±Ù }}} print ¸í·ÉÀº °£´ÜÈ÷ ó¸®Áß¿¡ ÇÊ¿äÇÑ ³»¿ëÀ» Ãâ·ÂÇÏ´Â ÇÔ¼öÀÌ´Ù. "$1"Àº 1st(ù¹ø°) Çʵ带 Áö½ÃÇÑ´Ù. ¸¶Âù°¡Áö·Î Á¡¼ö¸¦ Ãâ·ÂÇÏ·Á¸é, "$1" ´ë½Å¿¡ "$2"¸¦ ÀÔ·ÂÇÏ¸é µÈ´Ù. ±×·¯¸é, ¶óÀÎÀÇ Àüü ³»¿ëÀ» Ãâ·ÂÇÏ·Á¸é ¾î¶»°Ô ÇØ¾ß Çϴ°¡? "$0"¸¦ »ç¿ëÇϸé, ¶óÀÎÀÇ Àüü ³»¿ëÀ» Ãâ·ÂÇÒ ¼ö ÀÖ´Ù. ÀÌÁ¦ ¿©±â¿¡¼­ ½ÃÇèÄ£ »ç¶÷µéÀÇ ÃÑÁ¡À» ±¸ÇÏ·Á°í ÇÑ´Ù. ¾î¶»°Ô ÇØ¾ß ÇÒ±î? ÀÏ´Ü ÇÕ°è´Â ¼ýÀÚ¸¸ÀÌ °¡´ÉÇѵ¥, ÇöÀç´Â "95Á¡", "98Á¡"°ú °°ÀÌ "Á¡"À̶ó´Â ±ÛÀÚ°¡ Æ÷ÇԵǾî ÀÖ¾î, Çʵå·Î ±¸ºÐÇØ ³»¾îµµ °è»êÀÌ ºÒ°¡´ÉÇÏ´Ù. ±×·¯¸é, ÀÏ´Ü sed ÇÁ·Î±×·¥À» »ç¿ëÇØ "Á¡"À̶ó´Â ±ÛÀÚ¸¦ »èÁ¦ÇÏ¿© ¿¬»êÀÌ ¿ëÀÌÇϵµ·Ï ¸¸µé¾îº¸ÀÚ. sedscrÀÇ ³»¿ë {{{ # cat sedscr s/Á¡$// # sed -f sedscr exam_result.dat ¹ÚÁ¾±Ô 95 À̾ï¿î 98 ÀÌÈÆ°­ 99 ¾ö¼º±â 100 Á¤¿µ¿ø 97 ¹Ú¿À±Ù 98 }}} ÀÚ ÀÌÁ¦ °è»êÇÒ ¼ö°¡ ÀÖÀ» µí ÇÏ´Ù. ±×·¯¸é, ÇÁ·Î±×·¥À» Â¥º¸ÀÚ. {{{ # sed -f sedscr exam_result.dat | awk 'BEGIN{ sum = 0; print "ÃÑÁ¡ Ãâ·Â ÇÁ·Î±×·¥"; } {sum += $2} END {print "ÇÕ°è : " sum}' ÃÑÁ¡ Ãâ·Â ÇÁ·Î±×·¥ ÇÕ°è : 587 }}} À§ÀÇ ³»¿ëÀ» ¼³¸íÇϵµ·Ï ÇÏ¸é ´ÙÀ½°ú °°´Ù. BEGIN{ sum = 0; print "ÃÑÁ¡ Ãâ·Â ÇÁ·Î±×·¥"; } À§¿¡¼­ ¾ð±ÞµÈ awkÀÇ ¸ðµ¨¸µ¿¡¼­ BEGIN ºÎºÐ¿¡ ÇØ´çÇÑ´Ù. ·çƾÀÌ µ¹¾Æ°¡±â ÀÌÀü¿¡ ÇÊ¿äÇÑ ÀÛ¾÷À» ÀÌ ºÎºÐ¿¡ ±âÀçÇÒ ¼ö ÀÖÀ¸¸ç, Ãâ·ÂÀÇ ¸Ó¸´¸» µîÀ» ´Þ¾ÆµÑ ¼ö ÀÖ´Ù. Çհ踦 ³»±â À§ÇÑ º¯¼ö sumÀ» ÁöÁ¤ÇÏ°í, ±× °ªÀ» 0À¸·Î ÃʱâÈ­ÇÏ¿´´Ù. {sum += $2} ½ÇÁ¦ ÇÁ·Î±×·¥ ³»¿ëÀÌ´Ù. À§¿¡¼­ Routine(·çƾ)ÀÌ¶ó ¼³¸íÇÑ °÷ÀÌ´Ù. ÀÌ ºÎºÐÀº ÇÑ Çʵ帶´Ù Àû¿ëÀÌ µÇ¸ç, ÇÔ¼ö³ª ·çƾÀ» »ç¿ëÇÏ¿© ÇÊ¿äÇÑ ÀÛ¾÷À» ¼öÇàÇÑ´Ù. ÇöÀçÀÇ END {print "ÇÕ°è : " sum} À§¿¡¼­ ¾ð±ÞÇÑ END(¸¶Áö¸·) ó¸® ºÎºÐÀÌ´Ù. ¸ðµç ¿¬»êÀÌ ³¡³ª°í ³­ ´ÙÀ½ ¸¶Áö¸· Ãâ·Â ¾ç½ÄÀ̶óµçÁö °á°ú°ªÀ» Ãâ·ÂÇÑ´Ù. ÇöÀç ¼Ò½º´Â ÇÕ°è ³»¿ªÀ» Ãâ·ÂÇÑ´Ù. À§ÀÇ ¼Ò½º´Â ¾Ë¾Æº¸±â Èûµé±â ¶§¹®¿¡, awk ÄÚµå ºÎºÐÀ» ÆÄÀÏ·Î ÀúÀåÇÏ¿© ½ÇÇàÇÏ´Â ¹æ¹ýÀ» ½áº¸µµ·Ï ÇÏÀÚ. ¾Æ·¡ÀÇ ³»¿ëÀ¸·Î sum.awk ÆÄÀÏÀ» ÀÛ¼ºÇØ º¸ÀÚ {{{ #!/bin/awk # # This Program is for Summing of exam_result. # # BEGIN : ÇÁ·Î±×·¥ ½ÃÀÛ Ã³¸® BEGIN { sum = 0; print "ÃÑÁ¡ Ãâ·Â ÇÁ·Î±×·¥"; } # ROUTINE : ÇÁ·Î±×·¥ º»¹® { sum += $2; } # END : ÇÁ·Î±×·¥ ¸¶¹«¸® ó¸® END { print "ÇÕ°è : " sum; } }}} À§¿¡¼­ ùÁÙÀÇ #!/bin/awk´Â ¾ÕÀ¸·ÎÀÇ ³»¿ëµéÀº /bin/awk ÇÁ·Î±×·¥À» »ç¿ëÇؼ­ ¹ø¿ª(ó¸®)À» ÇÏ°Ú´Ù¶ó´Â ÁöÁ¤ ±¸¹®ÀÌ´Ù. ½©½ºÅ©¸³Æ®ÀÇ "#!/bin/sh"¿Í °°Àº ¿ªÇÒÀ» ÇÑ´Ù°í »ý°¢ÇÏ¸é µÉ °ÍÀÌ´Ù. ùÁÙ ÀÌ¿Ü¿¡ "#"À¸·Î ½ÃÀÛÇÏ´Â ¹®ÀåµéÀº ¸ðµÎ ÁÖ¼®ÀÌ´Ù. ÇÁ·Î±×·¥ÀÇ ¼³¸íÀ̳ª, ÇÔ¼ö, ·çƾ¿¡ ´ëÇÑ ¼³¸íÀ» Àû¾îµÐ´Ù. °¢ ³»¿ëÀº ÇÑÁÙÀÌ ³¡³¯¶§¸¶´Ù ";"(¼¼¹ÌÄÝ·Ð)À» ºÙ¿©¼­ ºÐ¸®¸¦ ÇÑ´Ù. ÀÚ, À§ÀÇ awk ½ºÅ©¸³Æ® ÆÄÀÏ·Î ½ÇÇàÀ» ÇØ º¸±â·Î ÇÏÀÚ. {{{ $ sed -f sedscr exam_result.dat | awk -f sum.awk }}} awk ½ºÅ©¸³Æ® ÆÄÀÏÀ» È£ÃâÇÒ ¶§¿¡´Â "-f ÆÄÀÏÀ̸§" ¿É¼ÇÀ» »ç¿ëÇÑ´Ù´Â °ÍÀ» ±â¾ïÇØ¾ß ÇÑ´Ù. ÀÚ, ±×·¯¸é ÀÌ ÇÁ·Î±×·¥¿¡¼­ Æò±ÕÀº ¾î¶»°Ô ±¸ÇÒ ¼ö ÀÖÀ»±î? ÀÌ¹Ì ´«Ä¡¸¦ æ »ç¶÷µéÀÌ ÀÖÀ» °ÍÀÌ´Ù. sum.awk ÆÄÀÏÀ» ¼öÁ¤ÇØ º¸ÀÚ. {{{ #!/bin/awk # # This Program is for Summing of exam_result. # # BEGIN : ÇÁ·Î±×·¥ ½ÃÀÛ Ã³¸® BEGIN { sum = 0; print "ÃÑÁ¡ Ãâ·Â ÇÁ·Î±×·¥"; } # ROUTINE : ÇÁ·Î±×·¥ º»¹® { sum += $2; } # END : ÇÁ·Î±×·¥ ¸¶¹«¸® ó¸® END { print "ÇÕ°è : " sum; average = sum / NR; print "Æò±Õ : " average; } }}} ½ÇÇàÀ» ÇÏ¸é ¾Æ·¡¿Í °°ÀÌ µÈ´Ù. {{{ $ sed -f sedscr exam_result.dat | awk -f sum.awk ÃÑÁ¡ Ãâ·Â ÇÁ·Î±×·¥ ÇÕ°è : 587 Æò±Õ : 97.8333 }}} === awkÀÇ ³»ºÎº¯¼ö === awk¿¡´Â awk°¡ ³»ºÎÀûÀ¸·Î °¡Áö´Â º¯¼öµéÀÌ ÀÖ´Ù. ÀÌ º¯¼öµéÀ» »ç¿ëÇÏ¿©, ÇÊµå ¹× ·¹ÄÚµåÀÇ ±¸ºÐÀ» Á»´õ ´Ù¾çÇÏ°Ô ÇÒ ¼ö ÀÖÀ¸¸ç, Á»´õ flexible(À¯¿¬ÇÑ)ÇÁ·Î±×·¥À» © ¼ö°¡ ÀÖ´Ù. ¾Æ·¡¿¡ °¢ ³»ºÎ º¯¼öµé¿¡ ´ëÇؼ­ ¼³¸íÇصξú´Ù. ||'''FS'''||ÇÊµå ±¸ºÐÀÚ - Fields Seperator|| ||'''RS'''||·¹ÄÚµå ±¸ºÐÀÚ - Records Seperator|| ||'''NF'''||ÇöÀç ·¹ÄÚµåÀÇ Çʵå¼ö(Number of Fields)|| ||'''NR'''||ÇöÀç ÆÄÀÏ¿¡¼­ ·¹ÄÚµå ³Ñ¹ö(Number of Records)|| ||'''FNR'''||ÀÔ·ÂÆÄÀÏÀÌ ¿©·¯°³ÀÎ °æ¿ì¿¡ ÇöÀç ÆÄÀÏ¿¡¼­ÀÇ NF¸¦ Ç¥½ÃÇÑ´Ù.|| ||'''OFS'''||Ãâ·Â½ÃÀÇ FS(Output Fields Seperator). ÀÌ °ªÀ» º¯°æÇÏ°Ô µÇ¸é, Ãâ·Â½ÃÀÇ FS °¡ ¹Ù²î°Ô µÈ´Ù.|| ||'''ORS'''||Ãâ·Â½ÃÀÇ RS(Output Records Seperator). ÀÌ °ªÀ» º¯°æÇÏ°Ô µÇ¸é, Ãâ·Â½ÃÀÇ RS °¡ ¹Ù²î°Ô µÈ´Ù.|| === Example 2 - awk ÇÁ·Î±×·¥ ÀÀ¿ë === ¿©±â¼­ FS ¿Í RS ¿¡ ´ëÇÑ ºÎ°¡ ¼³¸íÀ» ÇØ¾ß ÇÒ °Í °°´Ù. ÀϹÝÀûÀ¸·Î µ¥ÀÌÅÍ´Â º¸Åë ÇÑ ¶óÀÎÀÌ ÇÑ ·¹Äڵ忡 ÇØ´çÇÏ°í, ºóÄ­À̳ª, ÅÇ µîÀÌ Çʵ带 ±¸ºÐÇÑ´Ù. ±×·¯³ª, ½ÇÁ¦·Î µ¥ÀÌÅÍÆÄÀÏ¿¡¼­ ÀÌ·±½ÄÀ¸·Î 󸮰¡ µÇÁö ¾Ê´Â °æ¿ì°¡ ÀÖÀ¸¸ç, ±»ÀÌ µ¥ÀÌÅÍ ÆÄÀϸ¸ÀÌ ¾Æ´Ï¶ó, ´Ù¸¥ Çü½ÄÀÇ ÆÄÀϵµ ó¸®Çϱ⠶§¹®¿¡ FS, RS´Â ÀÓÀÇ ¼³Á¤ÀÌ °¡´ÉÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°Àº ¸íÇÔ ¸ñ·Ï ÆÄÀÏÀ» º¸ÀÚ. {{{ # cat cards.dat ¹éÁ¾±Ô ¸®´ª½º³Ý(ÁÖ) ºÎ»ê ±¤¿ª½Ã ¿¬Á¦±¸ ¿¬»êµ¿ ÇÑâ ºôµù 432È£ 051-851-2761 ±èÁø¿í ÀÌÁö½Ã½ºÅÛ ¼­¿ï½Ã ¼­Ãʱ¸ ¹æ¹è2µ¿ 450-3 3Ãþ 02-3473-6282 }}} À§ÀÇ µ¥ÀÌÅÍ ÆÄÀÏÀº ÇÑÁÙÀÌ ÇÑ ·¹Äڵ尡 µÇÁö ¾Ê´Â´Ù´Â °É ¾Ë¼ö ÀÖ´Ù. ÇÑ ·¹ÄÚµå´Â ÇÑÁÙÀÌ ºñ¿öÁø ÁÙ, Áï Á¤±Ô½ÄÀ¸·Î Ç¥ÇöÇÏÀÚ¸é "\n\n"À¸·Î ±¸ºÐµÇ¾î ÀÖÀ¸¸ç, ·¹Äڵ峻¿¡¼­ ÇʵåÀÇ ±¸ºÐÀº °³Çà("\n")À¸·Î ±¸ºÐµÈ´Ù. µû¶ó¼­, À§ÀÇ µ¥ÀÌÅÍ¿¡¼­ À̸§°ú ÀüÈ­¹øÈ£¸¸À» Ãâ·ÂÇÏ°í ½Í´Ù¸é, ´ÙÀ½°ú °°ÀÌ awk ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. {{{ #!/bin/awk BEGIN { RS = "\n\n"; FS = "\n"; } { print $1, $NF; } }}} À§ÀÇ ½ºÅ©¸³Æ®¿¡¼­ BEGIN ºÎºÐ¿¡¼­ RS¿Í FS¸¦ ÀÓÀ¸·Î "\n\n"°ú "\n"À¸·Î º¯°æÇÏ¿´´Ù. ¶ÇÇÑ ·çƾºÎºÐ¿¡¼­´Â ù¹ø° Çʵå($1)¿Í ¸¶Áö¸· Çʵå($NF)ÀÇ ³»¿ëÀ» Ãâ·ÂÇϵµ·Ï ÇÏ¿´´Ù. NFÇöÀç ·¹Äڵ忡¼­ ÇʵåÀÇ ¼ýÀÚ¸¦ ³ªÅ¸³½´Ù. ¿©±â¼­ ÀÎÀÚ°ªÀ» È£ÃâÇÏ´Â "$"À» ºÙÀÌ°Ô µÇ¸é, ¸¶Áö¸· Çʵ尪ÀÌ Ãâ·ÂÀÌ µÇ´Â °ÍÀÌ´Ù. == ¶Ç´Ù¸¥ ¿ä¾à ÆäÀÌÁö == 1. awk´Â Á÷Á¢ »ç¿ëÀڷκÎÅÍ ÀÔ·ÂÀ» ¹Þ°Å³ª ¾Æ´Ï¸é ÁöÁ¤ÇÑ ÆÄÀÏÀ» °¡°øÇÏ¿© Ç¥ÁØ Ãâ·ÂÇÑ´Ù. Ç¥ÁØ Ãâ·ÂÀ» ¸®´ÙÀÌ·º¼ÇÇÒ ¼ö ÀÖ´Ù 1. »ç¿ë¹ý * awk ![¿É¼Ç] '½ºÅ©¸³Æ®' ![-v º¯¼ö=°ª] ![ÆÄÀÏ(µé)] * awk ![¿É¼Ç] -f ½ºÅ©¸³Æ® ÆÄÀÏ ![-v º¯¼ö=°ª] ![ÆÄÀÏ(µé)] * cf) ÆíÁý ½ºÅ©¸³Æ® ÆÄÀÏÀÇ »ç¿ë¹ý * ed : ed -s(script) sourcefile < scriptfile * sed : sed -f(file) scriptfile sourcefile > outputfile * awk : awk -f(file) scriptfile sourcefile > outputfile 1. ¿É¼Ç * -Fc : field separator ÁöÁ¤ * c´Â ÇÊµå »çÀ̸¦ ±¸ºÐÇÏ´Â ±¸ºÐÀÚÀÌ´Ù * Á÷Á¢ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é °ø¹éÀ» ±âÁØÀ¸·Î ÇÑ´Ù * ½Ã½ºÅÛ º¯¼ö FS¸¦ ÁöÁ¤ÇÏ´Â °Í°ú °°Àº È¿°ú¸¦ Áö´Ñ´Ù * -v º¯¼ö = °ª * ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇϱâ Àü¿¡ ¹Ì¸® º¯¼ö¸¦ ÁöÁ¤ÇÏ¿© ÁØ´Ù * $¸¦ ¾²Áö ¾Ê°í º¯¼ö À̸§¸¸ ¾²¸é µÈ´Ù. C¿¡¼­ #defineó·³ »ý°¢ÇÏ¸é µÉ °ÍÀÌ´Ù. * -f ½ºÅ©¸³Æ® ÆÄÀÏ * ½ºÅ©¸³Æ®¸¦ ÆÄÀÏ¿¡¼­ °¡Á®¿Â´Ù * -f ¿É¼ÇÀ» ¿©·¯¹ø »ç¿ëÇÏ¿© ¿©·¯°³ÀÇ ½ºÅ©¸³Æ® ÆÄÀÏÀ» µ¿½Ã¿¡ ºÒ·¯¿Í ÁöÁ¤ÇÑ ÆÄÀÏ¿¡ Àû¿ëÇÒ ¼ö ÀÖ´Ù 1. ½ºÅ©¸³Æ® * ÆÐÅÏ { µ¿ÀÛ } * Ä¿¸Çµå ¶óÀο¡¼­´Â ÆÐÅÏ, µ¿ÀÛ Àüü¸¦ ´ÜÀÏ µû¿ÈÇ¥·Î ¹­´Â´Ù * ÆÐÅϸ¸ ÀÖ´Â °æ¿ì : ÆÐÅÏ°ú ÀÏÄ¡ÇÏ´Â ·¹ÄÚµå(¶óÀÎ)¸¦ È­¸é¿¡ Ãâ·ÂÇÑ´Ù * µ¿ÀÛ¸¸ ÀÖ´Â °æ¿ì : ¸ðµç ·¹ÄÚµå(¶óÀÎ)°¡ µ¿ÀÛÀÇ ´ë»óÀÌ µÈ´Ù * ÆÐÅÏ * /Á¤±ÔÇ¥Çö½Ä/ sed°¡ Áö¿øÇÏÁö ¾Ê´Â +, ?, |, ( ) µîÀÇ ¸ÞŸ¹®ÀÚµµ Áö¿øÇÑ´Ù ¶ÇÇÑ ^, $¸¦ °¢ ÇʵåÀÇ Ã³À½°ú ³¡À» ÀǹÌÇϵµ·Ï »ç¿ëÇÒ ¼öµµ ÀÖ´Ù * ºñ±³¿¬»ê ¼ýÀÚ ±âÁØ, ¾ËÆĺª ±âÁØ ¸ðµÎ »ç¿ë °¡´ÉÇÏ´Ù * ÆÐÅÏ ¸ÅĪ ¿¬»ê ~ : ÀÏÄ¡ÇÏ´Â ºÎºÐÀ» ³ªÅ¸³½´Ù !~ : ÀÏÄ¡ÇÏÁö ¾Ê´Â ºÎºÐÀ» ³ªÅ¸³½´Ù * BEGIN ù ¹ø° ·¹Äڵ尡 ÀÐÇôÁö±â Àü¿¡ ¾î¶² µ¿ÀÛÀ» Á¤ÀÇÇÏ¿© »ç¿ëÇÏ°í ½ÍÀ» ¶§ »ç¿ëÇÑ´Ù * END ¸¶Áö¸· ·¹Äڵ尡 ¸ðµÎ ÀÐÇôÁø ÈÄ ¾î¶² µ¿ÀÛÀ» Á¤ÀÇÇÏ¿© ½ÇÇàÇÏ°í ½ÍÀ» ¶§ »ç¿ëÇÑ´Ù 1. µ¿ÀÛ * µ¿ÀÛÀº ¸ðµÎ { }·Î µÑ·¯½Î¾ß ÇÑ´Ù * ¿¹Á¦ * goodÀ̶ó´Â ¹®ÀÚ¿­À» Æ÷ÇÔÇÏ´Â ¸ðµç ·¹Äڵ带 Ãâ·ÂÇÒ ¶§ /good/ * °¢ ·¹ÄÚµåÀÇ Ã¹ ¹ø° Çʵ带 Ãâ·ÂÇÒ ¶§ { print $1 } * goodÀ̶ó´Â ¹®ÀÚ¿­À» Æ÷ÇÔÇÏ´Â ·¹ÄÚµåÀÇ Ã¹ ¹ø° Çʵ带 Ãâ·ÂÇÒ ¶§ /good/ { print $1 } * µÎ °³ ÀÌ»óÀÇ Çʵ带 °¡Áö´Â ·¹Äڵ带 ÀüºÎ Ãâ·ÂÇÒ ¶§(ºñ±³¿¬»ê) NF > 2 * ÇÑ ¶óÀÎ(\n)À» Çʵå·Î, ºó ¶óÀÎ("")À» ·¹ÄÚµå·Î ±¸ºÐÇÒ ¶§ BEGIN { FS = "\n" ; RS = ""} * ù ¹ø° Çʵ尡 good¿Í ÀÏÄ¡ÇÏ´Â ·¹Äڵ忡 ´ëÇØ ¼¼ ¹ø° Çʵ带 ¸ÕÀú Ãâ·ÂÇÏ°í µÎ ¹ø° Çʵ带 ³ªÁß¿¡ Ãâ·ÂÇÏ°í ½ÍÀ» ¶§ $1 ~ /good/ { print $3 , $2 } * goodÀ̶ó´Â ¹®ÀÚ¿­ÀÌ ¸î °³³ª µé¾î°¡ ÀÖ´ÂÁö °è»êÇÏ¿© ¸¶Áö¸· ºÎºÐ¿¡¼­ Ãâ·ÂÇÏ°í ½ÍÀ» ¶§ /good/ { ++x } END { print x } * µÎ ¹ø° Çʵ带 ¸ðµÎ ÇÕÇÏ°í ¸¶Áö¸· ºÎºÐ¿¡¼­ µÎ ¹ø° ÇʵåÀÇ ÃÑÇհ踦 Ãâ·ÂÇÏ°í ½ÍÀ» ¶§ { total += $2 } END { print "Total of $2: " , total } * ·¹ÄÚµåÀÇ ±æÀÌ°¡ 20ÀÚ ÀÌÇÏÀÎ °ÍÀ» Ãâ·ÂÇÏ°í ½ÍÀ» ¶§ length($0) < 20 * ³× °³ÀÇ Çʵ带 °¡Áö¸ç goodÀ̶ó´Â ´Ü¾î·Î ½ÃÀÛÇÏ´Â ¸ðµç ·¹Äڵ带 Ãâ·ÂÇÏ°í ½ÍÀ» ¶§ NF == 4 && /^good/ * ºóÁÙÀ» Á¦¿ÜÇÑ ¸ðµç ÁÙÀ» È­¸é¿¡ Ãâ·ÂÇÑ´Ù NF > 0 1. awk ½Ã½ºÅÛ º¯¼ö || FILENAME || ÇöÀç ÆÄÀϸí ||$0 ||ÀÔ·Â ·¹ÄÚµå || ||'''FS'''||''''''ÀÔ·Â ÇÊµå ±¸ºÐ µðÆúÆ® : °ø¹é ||$n ||ÀÔ·Â ·¹ÄÚµåÀÇ N¹ø° Çʵå || ||'''NF'''||''''''ÇöÀç ·¹ÄÚµå ÇÊµå °¹¼ö ||ARGC ||Ä¿¸Çµå ¶óÀÎÀÇ ÀÎÀÚ °¹¼ö || ||'''NR'''||''''''ÇöÀç ·¹ÄÚµå ¹øÈ£ ||ARGV ||Ä¿¸Çµå ¶óÀÎ ÀÎÀÚ¸¦ Æ÷ÇÔÇÏ´Â ¹è¿­ || ||'''OFMT'''||¼ýÀÚ¿¡ ´ëÇÑ Ãâ·Â Æ÷¸Ë µðÆúÆ® : %.6g ||ENVIRON ||ȯ°æº¯¼öµéÀ» ¸ð¾ÆµÐ °ü°èÇü ¹è¿­ || ||'''OFS'''||Ãâ·Â ÇÊµå ±¸ºÐ µðÆúÆ® : ºóÁÙ ||FNR ||NR°ú µ¿ÀÏ ´ÜÁö ÇöÀç ÆÄÀÏ¿¡ Àû¿ëµÈ´Ù´Â Á¡ÀÌ ´Ù¸§ || ||'''ORS'''||Ãâ·Â ·¹ÄÚµå ±¸ºÐ µðÆúÆ® : newline ||RSTART ||ÁöÁ¤ÇÑ ¸ÅĪ ¿¬»êÀ» ¸¸Á·ÇÏ´Â ¹®ÀÚ¿­ÀÇ ¸Ç ¾ÕºÎºÐ || ||'''RS'''||ÀÔ·Â ·¹ÄÚµå ±¸ºÐ µðÆúÆ® : newline ||RLENGTH ||ÁöÁ¤ÇÑ ¸ÅĪ ¿¬»êÀ» ¸¸Á·ÇÏ´Â ¹®ÀÚ¿­ÀÇ ±æÀÌ || 1. awk ¿¬»êÀÚ * »ê¼ú : =, +=, -=, *=, /=, %= Á¶°Ç : ? : ³í¸® : ||, &&, ! ÆÐÅÏ : ~, !~ * ºñ±³ : <, <=, >, >=, !=,== Áõ°¨ : ++, -- ÇʵåÂüÁ¶ : $ 1. Á¦¾î¹®(CÀÇ Á¦¾î¹®°ú °°´Ù) * break * continue * do {½ÇÇà} while (Á¶°Ç) * exit * for (°ü°èÇü ¹è¿­ÀÇ ¿ä¼Ò) {½ÇÇà} * ÆÞÀÇ foreach¿Í °°´Ù * if (Á¶°Ç) {½ÇÇà} else {½ÇÇà} * return * while 1. awk ¸í·É¾î * ¹®ÀÚ¿­ ¿¬»ê * gsub(reg,s) ÀÔ·Â ¹®ÀÚ¿­ÀÇ Àü¹Ý¿¡ °ÉÃÄ Á¤±ÔÇ¥Çö½Ä rÀ» ¹®ÀÚ¿­ s·Î ´ëÄ¡ÇÑ´Ù. * gsub(reg,s1,s2) ¹®ÀÚ¿­ s2¿¡¼­ Á¤±ÔÇ¥Çö½Ä rÀ» s1À¸·Î ´ëÄ¡ÇÑ´Ù. * index(s1,s2) s1¿¡¼­ s2ÀÇ À§Ä¡¸¦ ³Ñ°ÜÁØ´Ù. ¸¸¾à ¾ø´Ù¸é 0À» ³Ñ°ÜÁØ´Ù. * length(arg) ÀÎÀÚÀÇ ±æÀ̸¦ ³Ñ°ÜÁØ´Ù. * match(s,r) ¹®ÀÚ¿­ s¿¡¼­ Á¤±ÔÇ¥Çö½Ä r°ú ¸ÅĪµÇ´Â ºÎºÐÀÇ À§Ä¡¸¦ ³Ñ°ÜÁØ´Ù. * split(string,array[,seperator]) ±¸ºÐÀÚ¸¦ ±âÁØÀ¸·Î(ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é °ø¹é ±âÁØ)Çؼ­ ÁöÁ¤ÇÑ ¹®ÀÚ¿­À» ¹è¿­·Î ¸¸µç´Ù ¹è¿­[1], ¹è¿­[2], ....... * sub(r,s), sub(r,s1,s2) gsub°ú µ¿ÀÏÇÏ´Ù. ´ÜÁö Á¤±ÔÇ¥Çö½Ä°ú ÀÏÄ¡ÇÏ´Â ¹®ÀÚ¿­ÀÌ ¿©·¯ °³¶óµµ óÀ½ ¹®ÀÚ¿­¸¸ ´ëÄ¡µÈ´Ù * substr(s,m) ¹®ÀÚ¿­ s¿¡¼­ m¹ø° À§Ä¡¿¡¼­ ³¡±îÁöÀÇ ¹®ÀÚ¸¦ ¸®ÅÏÇÑ´Ù * substr(s,m,n) ¹®ÀÚ¿­ s¿¡¼­ m¹ø° À§Ä¡¿¡¼­ n¹ø°±îÁöÀÇ ¹®ÀÚ¸¦ ¸®ÅÏÇÑ´Ù * tolower(str) * toupper(str) * ¼öÄ¡ ¿¬»ê * atan2(x,y) y/xÀÇ arctangent°ªÀ» ¶óµð¾È ´ÜÀ§·Î ³Ñ°ÜÁØ´Ù * cos(x) * exp(arg) * int(arg) * log(arg) * rand() 0°ú 1»çÀÌÀÇ ³­¼ö¸¦ ¹ß»ýÇÑ´Ù * sin(x) * sqrt(arg) * srand(expr) ÀÎÀÚ¸¦ °¡Áö°í ³­¼ö¸¦ ¹ß»ý½ÃŲ´Ù. ÀÎÀÚ°¡ ÁÖ¾îÁöÁö ¾ÊÀ¸¸é ½Ã°£À» °¡Áö°í ³­¼ö¸¦ ¹ß»ý½ÃŲ´Ù. * ÀÔÃâ·Â/ÇÁ·Î¼¼½º * close(filename) ÁöÁ¤ÇÑ ÆÄÀÏÀ» ´Ý´Â´Ù * close(cmd) ÁöÁ¤ÇÑ ¸í·É¾î ÆÄÀÌÇÁ¸¦ ´Ý´Â´Ù * delete array![element] ÁöÁ¤ÇÑ ¹è¿­ ¿ä¼Ò¸¦ Áö¿î´Ù * getline() ´ÙÀ½ ·¹Äڵ带 ÀÐ¾î µéÀδ٠* getline![variable] [< "filename"] ÆÄÀÏ¿¡¼­ ÀоîµéÀδ٠* next ´ÙÀ½ ·¹ÄÚµå(¶óÀÎ)À» ÀԷ¹޴´٠getline()°ú À¯»çÇÏÁö¸¸ /ÆÐÅÏ/µ¿ÀÛÀ» »õ·Ó°Ô ½ÃÀÛÇÑ´Ù getline()Àº ´ÙÀ½ ¶óÀÎÀ» Àб⸸ ÇÑ´Ù * print ![args] ![> "filename"] ÀÎÀÚ¸¦ Ãâ·ÂÇÑ´Ù * printf "format" [,expressions] ![> "filename"] Çü½Ä¿¡ ¸ÂÃç Ãâ·ÂÇÑ´Ù * sprintf (format [,expressions]) printf¿Í ¸¶Âù°¡Áö·Î »ç¿ëÇϴµ¥ °ªÀ» ¸®ÅÏÇϱ⸸ ÇÏ°í Ãâ·ÂÀº ÇÏÁö ¾Ê´Â´Ù. * system(command) ½Ã½ºÅÛ ³»ºÎ ¸í·É¾î¸¦ ½ÇÇàÇÑ´Ù 1. °£´ÜÇÑ ¿¹ * awk ' BEGIN { for (i = 1;i<=7,i++) print int(101*rand()) }' È­¸é¿¡ 1ÀÌ»ó 100ÀÌÇÏÀÇ ³­¼ö ÀÏ°ö °³¸¦ Ãâ·ÂÇÑ´Ù * ls -l file1 file2 file3 | awk ' { x += $5 } ; END { print "Total bytes : " x } ' ÆÄÀϵéÀÇ Å©±â¸¦ ¸ðµÎ ÇÕÇÏ¿© ÃÑ ¹ÙÀÌÆ® ¼ö¸¦ Ç¥½ÃÇÑ´Ù * awk ' END { print NR } ' filename ÁöÁ¤ÇÑ ÆÄÀÏÀÇ ¶óÀÎÀÌ ¸î °³ÀÎÁö¸¦ Ç¥½ÃÇÑ´Ù * awk ' NR % 2 == 0 ' ÁöÁ¤ÇÑ ÆÄÀÏÀÇ Â¦¼ö¹ø°ÀÇ ¶óÀθ¸À» Ãâ·ÂÇØ ÁØ´Ù ---- ¹è¿­ÀÌ ½â ÈǸ¢ÇÏ°Ô Áö¿øµÇ´Âµ¥ ¼¼ºÎ µ¿ÀÛÀÌ Á» ¿¹»ó ¹ÛÀÔ´Ï´Ù. for(var in arr)¸¦ µ¹¸®¸é var¿¡ 1,2,3,...ÀÌ µé¾î°¥ »ÓÀÔ´Ï´Ù. awk¿¡¼­ ¹è¿­ÀÇ Æ¯¼º ¶§¹®Àε¥ Á¤È®ÇÑ °Ç ¸Þ´º¾óÀ» ã¾Æº¸µµ·Ï ÇÏ°í, ¿©±â¼­´Â ¹è¿­À» ÇÑ ¹ø µÚÁý¾î¼­ ÈçÈ÷ »ý°¢ÇÏ´Â ¹ÝÀÀ´ë·Î ¾²´Â ¹ýÀ» ¼Ò°³ÇÕ´Ï´Ù. ÀÌ´Â ¸Þ´º¾ó¿¡µµ ³ª¿Í ÀÖ´Â ³»¿ëÀÔ´Ï´Ù. {{{ split(string, tmp) for (var in tmp) { new[tmp[var]] = var delete tmp[var] } }}} splitÀº ¹®ÀÚ¿­À» ÂÉ°³´Â °ÍÀ¸·Î ¼¼ ¹ø° ÀÎÀÚ¿¡ ±¸ºÐÀÚ¸¦ ÁÖ¸é ±×°Í¿¡ ¸ÂÃç ÂÉ°³°í, ¾Æ´Ï¸é FS¿¡ ÁöÁ¤µÈ °É·Î µ¿ÀÛÇÕ´Ï´Ù. ±×¸®°í ±× ¹è¿­À» ÈȾ tmpÀÇ key¿Í value¸¦ ¹Ý´ë·Î ´Ù¸¥ ¹è¿­¿¡ ÀúÀåÇÏ°í tmp¸¦ Áö¿ó´Ï´Ù. ±× ´ÙÀ½¿¡ for(var in new)¶ó°í ÇÏ¸é ¾ÖÃÊ¿¡ string¿¡ ÀÖ´ø °ªµéÀÌ var¿¡ µé¾î°¥ °Ì´Ï´Ù. ---- CategorySoftware