|
 |
|
|
 |
 | (2005-03-05 [11:06], Hit : 19355) |
 |
awk ÀÌ¿ëÇØº¸±â |
|
|
|
1. Awk¶õ? : awk´Â ÇÁ·Î±×·¥ ÅøÀÌ´Ù. ÀÌ ÅøÀº »ó´çÈ÷ ¹è¿ì±â ½±°í, »ç¿ëÇϱⰡ Æí¸®ÇÏ´Ù. awk´Â ±âº»ÀûÀ¸·Î µ¥ÀÌÅÍ Ã³¸®¸¦ À§ÇÑ »ó´çÈ÷ Àß ¸¸µé¾îÁø ÇÁ·Î±×·¡¹Ö ¸ðµ¨À» °¡Áö°í ÀÖ´Ù. ÀÌ ¸»Àº µ¹·Á¼ ¾ê±âÇÑ´Ù¸é, ÀϹÝÀûÀÎ ÇÁ·Î±×·¥À» Â¥±â¿¡´Â ºÒÆíÇÏ´Ù´Â ¾ê±â°¡ µÉ¼ö ÀÖ´Ù. Áï perl¿¡¼ Áö¿øÇÏ´Â ¿©·¯°¡Áö API ÇÔ¼ö¸¦ ÀÌ¿ëÇÑ ÇÁ·Î±×·¥À̳ª, º¹ÀâÇÑ Á¤±ÔÇ¥Çö½ÄÀ» ó¸®Çϱ⿡´Â ¸¹Àº ¾î·Á¿òÀÌ ÀÖ´Ù´Â °ÍÀÌ´Ù. Áï, awk ´Â awk ³ª¸§´ë·ÎÀÇ ¿ëµµ¶ó´Â °ÍÀÌ ÀÖ´Ù´Â ¸»ÀÌ´Ù. ¹°·Ð awk °¡Áö°íµµ ¿©·¯°¡Áö º¹ÀâÇÑ ÀϹÝÇÁ·Î±×·¡¹ÖÀÌ °¡´ÉÇÏÁö¸¸, ¼ÖÁ÷È÷ ÀÌ·¯ÇÑ °ÍÀ» ó¸®ÇÒ¶§¿¡´Â awk º¸´Ù´Â ´Ù¸¥ ÇÁ·Î±×·¥À» »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù. ÀÏ´Ü °£´ÜÈ÷ ¾ê±âÇÏÀÚ¸é, awk´Â µ¥ÀÌÅÍ ¾ç½ÄÀÇ ¹®¼³ª ¶Ç´Â ÀڷḦ ó¸®ÇÏ¿© ´Ù¸¥ ÇüÅÂÀÇ ¹®¼ ¶Ç´Â °á°ú¹°À» Ãâ·ÂÇϴµ¥ ¾²ÀδÙ. ½ÇÁ¦·Î awkÀÇ ÇÁ·Î±×·¥ µ¿ÀÛ ¸ðµ¨Àº À̰ÍÀ» À§ÇØ ¾ÆÁÖ Àß ¸¸µé¾îÁ® ÀÖ´Ù. 2. awkÀÇ ±¸Á¶(Model) : awk´Â À§¿¡¼ ¾ð±ÞÇÑ ¹Ù¿Í °°ÀÌ µ¥ÀÌÅÍ Ã³¸®¸¦ À§ÇØ ÃÖÀûÈ µÇ¾î ÀÖ´Ù°í Çß´Ù. ±×·¯¸é, ¾î¶°ÇÑ ¸ðµ¨ÀÌ µ¥ÀÌÅÍ Ã³¸®¿¡ ÀûÇÕÇÑ °ÍÀϱî? ÀÏ´Ü ¾Æ·¡ÀÇ ³»¿ëÀ» º¸°í ³ª¼ °è¼Ó ¼³¸íÇϰڴÙ. 1. ½ÃÀÛ(BEGIN) : ÀԷµ¥ÀÌÅ͸¦ ½ÇÇàÇϱ⿡ ÀûÇÕÇÑ ÇüÅ·Π¹Ù²Ù¾î ÁÖ´Â ´Ü°èÀÌ´Ù. ÇÁ·Î±×·¥ÀûÀÎ ¸»·Î´Â preprocess¶ó°í ÇÑ´Ù. 2. ½ÇÇà(Routine) : [½ÃÀÛ ´Ü°è]¿¡¼ Àß Ã³¸®µÈ(Á¤±ÔȵÈ) µ¥ÀÌÅ͸¦ ½ÇÁ¦ ·çƾÀ¸·Î ó¸®ÇÏ´Â °ÍÀÌ´Ù. ¿©±â¼ µ¥ÀÌÅʹ ó¸® ·çƾ¿¡ µû¶ó 󸮰¡ µÇ¸ç, ÀԷ°ªÀÌ ·çƾÀ» °ÅÃÄ °á°ú°ªÀÌ ³ª¿À°Ô µÈ´Ù. 3. ³¡(END) : [½ÃÀÛ ´Ü°è]¿Í ¸¶Âù°¡Áö·Î, µ¥ÀÌÅͰ¡ ó¸®µÈ ÈÄ¿¡ ó¸®ÇØ¾ß ÇÒ ³»¿ëµéÀ» ´ã°í ÀÖ´Ù. °á°úÀÇ Ãß°¡ Ãâ·ÂµéÀ» ¿¹·Î µé¼ö ÀÖ´Ù. 3. awk ÇÁ·Î±×·¥ ÀϹÝÀûÀÎ awk ÀÇ ¿ëµµ ¹× »ç¿ë¹æ¹ý(Using Model) awk´Â ÀϹÝÀûÀ¸·Î µ¥ÀÌÅÍ ¶Ç´Â À¯»ç µ¥ÀÌÅ;ç½ÄÀÇ ÆÄÀÏ ¹× ÀڷḦ ó¸®Çϴµ¥ ¾²ÀδÙ. ¿¹¸¦ µé¾î Åë°è Àڷᳪ, text Çü½ÄÀÇ access(MicroSoft), ½ÇÇè½ÄÀÇ °è»ê °á°ú µîÀ» Åë°è¸¦ ³½´Ù´øÁö ºñ±³ ºÐ¼® ÇÑ´Ù´øÁö ´Ù¸¥ ÇüÅÂÀÇ ¹®¼(°á°ú¹°)·Î º¯È¯ÇÏ´Â µîÀÇ ÀÛ¾÷¿¡ »ç¿ëµÈ´Ù. µû¶ó¼ ÀÌ·¯ÇÑ ÀÛ¾÷¿¡ ÀÖ¾î¼ awk´Â 100%ÀÇ ÀÛ¾÷È¿À²À» °¡Á®¿Ã¼ö ÀÖ´Ù. ¹°·Ð perlÀ̳ª, À¯»çÇÁ·Î±×·¥À» »ç¿ëÇØµµ ÁÁÁö¸¸, Ưº°ÇÏ°Ô º¹ÀâÇÑ ±¸Á¶¸¦ °¡ÁöÁö ¾Ê´Â´Ù¸é, ±»ÀÌ "Åä³¢ Àâ´Âµ¥, ¼ÒÀâ´Â Ä®À» ¾µ ÀÌÀ¯´Â ¾ø´Ù"´Â °ÍÀÌ´Ù. awk¸¸À¸·Î ÃæºÐÇϸç, ¶ÇÇÑ sed³ª ´Ù¸¥ GNU À¯Æ¿À» º´ÇÕÇÏ¿© »ç¿ëÇÏ´Â °ÍÀÌ ´ÜÀÏ perl ÇÁ·Î±×·¥À̳ª, ±âŸ µ¥ÀÌÅÍ Ã³¸® ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ »ç¿ëÇÏ´Â °Íº¸´Ù ÈξÀ ³´±â ¶§¹®ÀÌ´Ù. °³ÀÎÀûÀÎ °üÁ¡À¸·Î´Â GNU À¯Æ¿µéÀº »ó´çÈ÷ À¯¿¬Çϰí(flexible)Çϰí, °£ÆíÇÏÁö¸¸, ½ÇÁ¦ÀûÀ¸·Î °³°³ÀÇ GNU À¯Æ¿·Î ÀÛ¾÷À» Çϱ⿡´Â »ó´çÈ÷ ÈûÀÌ µç´Ù. ±×·¯³ª, À̵é GNU À¯Æ¿µéÀ» ÀûÀýÇÏ°Ô Á¶ÇÕÇÏ¿© »ç¿ëÇϸé, ±âÁ¸ÀÇ ¿©Å¸ ÇÁ·Î±×·¥µé°ú µ¿µîÇÑ ±â´ÉÀ» ¹ßÈÖÇÏ´Â ¸ÚÁø ÇÁ·Î±×·¥ÀÌ µÉ¼ö ÀÖ´Â °ÍÀÌ´Ù. ±×·¡¼ º¸ÅëÀÇ ÀÛ¾÷Àº awk Çϳª¸¸ °¡Áö°í, ¸ðµÎ ´Ù ó¸® ÇÒ¼ö°¡ ¾ø´Ù. ÇϰíÀÚ ÇÏ´Â ÀÏÀÇ ÀϺκÐÀ» awk°¡ ¸ÃÀ»¼ö ÀÖ´Â °ÍÀÌ´Ù. º¸ÅëÀÇ ÀϹÝÀûÀÎ awkÀÇ »ç¿ëÀº ´ÙÀ½°ú °°Àº ´Ü°è¸¦ °ÅÄ¡°Ô µÈ´Ù. egrep ¹× grep À» ÀÌ¿ëÇÑ µ¥ÀÌÅÍ ÆÄÀÏÀÇ ±¸Á¶È®ÀÎÀ» ÇÑ´Ù. Á¤±ÔȰ¡ °¡´ÉÇÑÁö¸¦ È®ÀÎÇϰí, sed ·Î Å×½ºÆ® ÇØº»´Ù. awk°¡ ó¸®ÇÒ¸¸Å Á¤±ÔȰ¡ µÇ¾î ÀÖ´Ù¸é, ¹Ù·Î awk¸¦ »ç¿ëÇÑ´Ù. sed·Î Á¤±ÔÈµÈ ¾ç½ÄÀ» awk·Î ó¸®ÇÑ´Ù. µ¥ÀÌÅÍÀÇ ¾ç½Ä µ¥ÀÌÅÍ´Â ÀϹÝÀûÀ¸·Î Record¿Í Fields¸¦ °¡Áø´Ù. ÀϹÝÀûÀ¸·Î ÇѶóÀÎ(ÇÑÁÙ)ÀÌ 1 record°¡ µÇ°í, FieldsÀÇ ±¸ºÐÀº "¡à"(°ø¹é¹®ÀÚ)¸¦ ±¸ºÐÀÚ·Î ÇÏ°Ô µÈ´Ù. (·¹ÄÚµå¿Í Çʵ忡 ´ëÇØ¼ ÀÌÇØ°¡ °¡Áö ¾Ê´Â »ç¶÷Àº DataBase ¿¡ ´ëÇÑ °³¿äµîÀ» Âü°í Çϱ⠹ٶõ´Ù.) ÀϹÝÀûÀ¸·Î awk°¡ ó¸® ÇÒ¼ö ÀÖ´Â µ¥ÀÌÅÍÀÇ Çü½ÄÀº ´ÙÀ½°ú °°´Ù. <pre>¡á¡á¡á¡à¡á¡á¡á¡á¡à¡á¡á¡á¡à¡á¡á¡á¡à¡á¡á¡á¡á¡á¡á¡à¡á¡á¡á¡á ¡á¡á¡á¡á¡à¡á¡á¡à¡á¡á¡á¡á¡á¡á¡á¡à¡á¡á¡á¡á¡à¡á¡á¡à¡á¡á¡á¡á ¡á¡á¡à¡á¡á¡á¡á¡á¡á¡á¡á¡á¡à¡á¡á¡à¡á¡á¡à¡á¡á¡á¡á¡á¡á¡á¡á¡à¡áÀ§ÀÇ µ¥ÀÌÅÍ´Â ¾Æ·¡ÀÇ Çü½ÄÀ¸·Î ¹Ù²î°Ô µÈ´Ù. 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 ¸¦ ±¸ºÐÇÏ´Â °Íµµ °ø¹é ¹®ÀÚ°¡ ¾Æ´Ò¼öµµ ÀÖ´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½ÀÇ ¿¹Á¦¸¦ º¸¸é¼ ÀÌÇØ¸¦ ÇÒ¼ö ÀÖÀ» °ÍÀÌ´Ù. 3.1 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 ÆÄÀÏÀ» ÀÛ¼ºÇØ º¸ÀÚ # cat 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 ÆÄÀÏÀ» ¼öÁ¤ÇØ º¸ÀÚ.# cat 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 / 6; print "Æò±Õ : " average; }½ÇÇàÀ» ÇÏ¸é ¾Æ·¡¿Í °°ÀÌ µÈ´Ù. # sed -f sedscr exam_result.dat | awk -f sum.awk ÃÑÁ¡ Ãâ·Â ÇÁ·Î±×·¥ ÇÕ°è : 587 Æò±Õ : 97.83333.2 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 °¡ ¹Ù²î°Ô µÈ´Ù. 3.3 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 ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇÒ¼ö ÀÖ´Ù. # cat block.awk#!/bin/awk BEGIN { RS = "\n\n"; FS = "\n"; } { print $1, $NF; }À§ÀÇ ½ºÅ©¸³Æ®¿¡¼ BEGIN ºÎºÐ¿¡¼ RS¿Í FS¸¦ ÀÓÀ¸·Î "\n\n" °ú "\n"À¸·Î º¯°æÇÏ¿´´Ù. ¶ÇÇÑ ·çƾºÎºÐ¿¡¼´Â ù¹øÂ° Çʵå($1)¿Í ¸¶Áö¸· Çʵå($NF)ÀÇ ³»¿ëÀ» Ãâ·ÂÇϵµ·Ï ÇÏ¿´´Ù. NFÇöÀç ·¹Äڵ忡¼ ÇʵåÀÇ ¼ýÀÚ¸¦ ³ªÅ¸³½´Ù. ¿©±â¼ ÀÎÀÚ°ªÀ» È£ÃâÇÏ´Â "$" ºÙÀÌ°Ô µÇ¸é, ¸¶Áö¸· Çʵ尪ÀÌ Ãâ·ÂÀÌ µÇ´Â °ÍÀÌ´Ù. |
|
MSIE 6.0 (Windows NT 5.1) 210.105.172.170
|
|
|
|
|
|
 |
|