Awk
awk´Â ¸í·É¾î¸¦ »ç¿ëÇÏ´Ùº¸¸é, ÀÇ¿Ü·Î ÀÚÁÖ¾²´Âµ¥, Áö±Ý±îÁö ¾óÃß ¸ÂÃç¼ ¾²´Ù°¡ ¹®¼´Â ã¾Ò½À´Ï´Ù¸¸, À§Å°¿¡ ¾ø¾î¼ ãÀº°ÍµéÀ» Á¤¸®Çؼ ±ÛÀ» ¾¹´Ï´Ù. °ø°³µÇ¾îÀÖ´Â ¹®¼¸¦ ã¾Æ¼ Ç߱⿡, Àý´ë âÀÛ¹®¼°¡ ¾Æ´Õ´Ï´Ù. Á¶±Ý ±æ¾îÁö´Ù º¸´Ï.. Çü½ÄÀÌ ¸¶±¸ Ʋ¾îÁö°í, Å×ÀÌºí ¹«¼Áö°í ÀÖ½À´Ï´Ù... ±×·±µ¥, À§Å°Ãʺ¸¶ó¼ Àâ±â°¡ ¸Å¿ì Èûµé±º¿ä...
Á».. µµ¿ÍÁÖ¼¼¿ä ¤Ð.¤Ð --maylinux
1. Awk¶õ? ¶awk´Â ÇÁ·Î±×·¥ ÅøÀÌ´Ù. ÀÌ ÅøÀº »ó´çÈ÷ ¹è¿ì±â ½±°í, »ç¿ëÇϱⰡ Æí¸®ÇÏ´Ù. ¿Ö ±×·²±î? awk´Â ±âº»ÀûÀ¸·Î µ¥ÀÌÅÍ Ã³¸®¸¦ À§ÇÑ »ó´çÈ÷ Àß ¸¸µé¾îÁø ÇÁ·Î±×·¡¹Ö ¸ðµ¨À» °¡Áö°í ÀÖ´Ù. ÀÌ ¸»Àº µ¹·Á¼ ¾ê±âÇÑ´Ù¸é, ÀϹÝÀûÀÎ ÇÁ·Î±×·¥À» Â¥±â¿¡´Â ºÒÆíÇÏ´Ù´Â ¾ê±â°¡ µÉ¼ö ÀÖ´Ù. Áï perl¿¡¼ Áö¿øÇÏ´Â ¿©·¯°¡Áö API ÇÔ¼ö¸¦ ÀÌ¿ëÇÑ ÇÁ·Î±×·¥À̳ª, º¹ÀâÇÑ Á¤±ÔÇ¥Çö½ÄÀ» ó¸®Çϱ⿡´Â ¸¹Àº ¾î·Á¿òÀÌ ÀÖ´Ù´Â °ÍÀÌ´Ù. Áï, awk´Â awk ³ª¸§´ë·ÎÀÇ ¿ëµµ¶ó´Â °ÍÀÌ ÀÖ´Ù´Â ¸»ÀÌ´Ù. ¹°·Ð awk °¡Áö°íµµ ¿©·¯°¡Áö º¹ÀâÇÑ ÀÏ¹Ý ÇÁ·Î±×·¡¹ÖÀÌ °¡´ÉÇÏÁö¸¸, ¼ÖÁ÷È÷ ÀÌ·¯ÇÑ °ÍÀ» ó¸®ÇÒ¶§¿¡´Â awk º¸´Ù´Â ´Ù¸¥ ÇÁ·Î±×·¥À» »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù. ÀÏ´Ü °£´ÜÈ÷ ¾ê±âÇÏÀÚ¸é, awk´Â µ¥ÀÌÅÍ ¾ç½ÄÀÇ ¹®¼³ª ¶Ç´Â ÀڷḦ ó¸®ÇÏ¿© ´Ù¸¥ ÇüÅÂÀÇ ¹®¼ ¶Ç´Â °á°ú¹°À» Ãâ·ÂÇϴµ¥ ¾²ÀδÙ. ½ÇÁ¦·Î awkÀÇ ÇÁ·Î±×·¥ µ¿ÀÛ ¸ðµ¨Àº ÀÌ°ÍÀ» À§ÇØ ¾ÆÁÖ Àß ¸¸µé¾îÁ® ÀÖ´Ù. ¹¹, Àß ¸¸µé¾îÁ® ÀÖ´ÂÁö ¾Æ´ÑÁö´Â ´ÙÀ½ÀÇ ±ÛµéÀ» Àоî¾ß ¾Ë°ÚÁö¸¸, ÀÏ´ÜÀº ±×·¸´Ù´Â °É ±â¾ïÇصα⠹ٶõ´Ù.
2. awkÀÇ ±¸Á¶(Model) ¶awk´Â À§¿¡¼ ¾ð±ÞÇÑ ¹Ù¿Í °°ÀÌ µ¥ÀÌÅÍ Ã³¸®¸¦ À§ÇØ ÃÖÀûȵǾî ÀÖ´Ù°í Çß´Ù. ±×·¯¸é, ¾î¶°ÇÑ ¸ðµ¨ÀÌ µ¥ÀÌÅÍ Ã³¸®¿¡ ÀûÇÕÇÑ °ÍÀϱî? ÀÏ´Ü ¾Æ·¡ÀÇ ³»¿ëÀ» º¸°í ³ª¼ °è¼Ó ¼³¸íÇÏ°Ú´Ù.
1. ½ÃÀÛ(BEGIN) : ÀԷµ¥ÀÌÅ͸¦ ½ÇÇàÇϱ⿡ ÀûÇÕÇÑ ÇüÅ·Π¹Ù²Ù¾îÁÖ´Â ´Ü°èÀÌ´Ù. ÇÁ·Î±×·¥ÀûÀÎ ¸»·Î´Â preprocess¶ó°í ÇÑ´Ù.
2. ½ÇÇà(Routine) : [½ÃÀÛ ´Ü°è]¿¡¼ Àß Ã³¸®µÈ(Á¤±ÔȵÈ) µ¥ÀÌÅ͸¦ ½ÇÁ¦ ·çƾÀ¸·Î ó¸®ÇÏ´Â °ÍÀÌ´Ù. ¿©±â¼ µ¥ÀÌÅʹ ó¸® ·çƾ¿¡ µû¶ó 󸮰¡ µÇ¸ç, ÀԷ°ªÀÌ ·çƾÀ» °ÅÃÄ °á°ú°ªÀÌ ³ª¿À°Ô µÈ´Ù.
3. ³¡(END) : [½ÃÀÛ ´Ü°è]¿Í ¸¶Âù°¡Áö·Î, µ¥ÀÌÅÍ°¡ ó¸®µÈ ÈÄ¿¡ ó¸®ÇØ¾ß ÇÒ ³»¿ëµéÀ» ´ã°í ÀÖ´Ù. °á°úÀÇ Ãß°¡ Ãâ·ÂµéÀ» ¿¹·Î µé ¼ö ÀÖ´Ù.
3.1. ÀϹÝÀûÀÎ awk ÀÇ ¿ëµµ ¹× »ç¿ë¹æ¹ý(Using Model) ¶awk´Â ÀϹÝÀûÀ¸·Î µ¥ÀÌÅÍ ¶Ç´Â À¯»ç µ¥ÀÌÅ;ç½ÄÀÇ ÆÄÀÏ ¹× ÀڷḦ ó¸®Çϴµ¥ ¾²ÀδÙ. ¿¹¸¦ µé¾î Åë°è Àڷᳪ, text Çü½ÄÀÇ access(MicroSoft), ½ÇÇè½ÄÀÇ °è»ê °á°ú µîÀ» Åë°è¸¦ ³½´Ù´øÁö ºñ±³ ºÐ¼® ÇÑ´Ù´øÁö ´Ù¸¥ ÇüÅÂÀÇ ¹®¼(°á°ú¹°)·Î º¯È¯ÇÏ´Â µîÀÇ ÀÛ¾÷¿¡ »ç¿ëµÈ´Ù. µû¶ó¼ ÀÌ·¯ÇÑ ÀÛ¾÷¿¡ ÀÖ¾î¼ awk´Â 100%ÀÇ ÀÛ¾÷È¿À²À» °¡Á®¿Ã¼ö ÀÖ´Ù. ¹°·Ð perlÀ̳ª, À¯»çÇÁ·Î±×·¥À» »ç¿ëÇصµ ÁÁÁö¸¸, Ưº°ÇÏ°Ô º¹ÀâÇÑ ±¸Á¶¸¦ °¡ÁöÁö ¾Ê´Â´Ù¸é, ±»ÀÌ "Åä³¢ Àâ´Âµ¥, ¼ÒÀâ´Â Ä®À» ¾µ ÀÌÀ¯´Â ¾ø´Ù"´Â °ÍÀÌ´Ù. awk¸¸À¸·Î ÃæºÐÇϸç, ¶ÇÇÑ sed³ª ´Ù¸¥ GNU À¯Æ¿À» º´ÇÕÇÏ¿© »ç¿ëÇÏ´Â °ÍÀÌ ´ÜÀÏ perl ÇÁ·Î±×·¥À̳ª, ±âŸ µ¥ÀÌÅÍ Ã³¸® ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ »ç¿ëÇÏ´Â °Íº¸´Ù ÈξÀ ³´±â ¶§¹®ÀÌ´Ù.
°³ÀÎÀûÀÎ °üÁ¡À¸·Î´Â GNU À¯Æ¿µéÀº »ó´çÈ÷ À¯¿¬ÇÏ°í(flexible)ÇÏ°í, °£ÆíÇÏÁö¸¸, ½ÇÁ¦ÀûÀ¸·Î °³°³ÀÇ GNU À¯Æ¿·Î ÀÛ¾÷À» Çϱ⿡´Â »ó´çÈ÷ ÈûÀÌ µç´Ù. ±×·¯³ª, À̵é GNU À¯Æ¿µéÀ» ÀûÀýÇÏ°Ô Á¶ÇÕÇÏ¿© »ç¿ëÇϸé, ±âÁ¸ÀÇ ¿©Å¸ ÇÁ·Î±×·¥µé°ú µ¿µîÇÑ ±â´ÉÀ» ¹ßÈÖÇÏ´Â ¸ÚÁø ÇÁ·Î±×·¥ÀÌ µÉ ¼ö ÀÖ´Â °ÍÀÌ´Ù.
±×·¡¼ º¸ÅëÀÇ ÀÛ¾÷Àº awk Çϳª¸¸ °¡Áö°í, ¸ðµÎ ´Ù ó¸®ÇÒ ¼ö°¡ ¾ø´Ù. ÇÏ°íÀÚ ÇÏ´Â ÀÏÀÇ ÀϺκÐÀ» awk°¡ ¸ÃÀ»¼ö ÀÖ´Â °ÍÀÌ´Ù. º¸ÅëÀÇ ÀϹÝÀûÀÎ awkÀÇ »ç¿ëÀº ´ÙÀ½°ú °°Àº ´Ü°è¸¦ °ÅÄ¡°Ô µÈ´Ù.
ÀϹÝÀûÀ¸·Î awk°¡ ó¸®ÇÒ ¼ö ÀÖ´Â µ¥ÀÌÅÍÀÇ Çü½ÄÀº ´ÙÀ½°ú °°´Ù.
À§ÀÇ µ¥ÀÌÅÍ´Â ¾Æ·¡ÀÇ Çü½ÄÀ¸·Î ¹Ù²î°Ô µÈ´Ù.
(À§ÀÇ Ç¥°¡ Àß ÀÌÇصÇÁö ¾Ê´Â´Ù¸é, DB ÀÔ¹®¼ µîÀ» Àоµµ·Ï ÇÑ´Ù.) °¢ ¶óÀÎÀÌ ÇÑ ·¹Äڵ尡 µÇ¸ç, ½ºÆäÀ̽º·Î ºÐ¸®µÈ ¹®ÀÚ¿ÀÌ Field(¶Ç´Â Column)À¸·Î ³ª´µ°Ô µÈ´Ù. ½ÇÁ¦·Î´Â ÇÑ ·¹Äڵ尡 ÇÑ ¶óÀΰú ÀÏÄ¡ÇÏÁö ¾ÊÀ» ¼öµµ ÀÖÀ¸¸ç, Field ¸¦ ±¸ºÐÇÏ´Â °Íµµ °ø¹é¹®ÀÚ°¡ ¾Æ´Ò¼öµµ ÀÖ´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½ÀÇ ¿¹Á¦¸¦ º¸¸é¼ ÀÌÇظ¦ ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
3.2. 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.awkawk ½ºÅ©¸³Æ® ÆÄÀÏÀ» È£ÃâÇÒ ¶§¿¡´Â "-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 3.3. awkÀÇ ³»ºÎº¯¼ö ¶awk¿¡´Â awk°¡ ³»ºÎÀûÀ¸·Î °¡Áö´Â º¯¼öµéÀÌ ÀÖ´Ù. ÀÌ º¯¼öµéÀ» »ç¿ëÇÏ¿©, ÇÊµå ¹× ·¹ÄÚµåÀÇ ±¸ºÐÀ» Á»´õ ´Ù¾çÇÏ°Ô ÇÒ ¼ö ÀÖÀ¸¸ç, Á»´õ flexible(À¯¿¬ÇÑ)ÇÁ·Î±×·¥À» © ¼ö°¡ ÀÖ´Ù. ¾Æ·¡¿¡ °¢ ³»ºÎ º¯¼öµé¿¡ ´ëÇؼ ¼³¸íÇصξú´Ù.
3.4. 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ÇöÀç ·¹Äڵ忡¼ ÇʵåÀÇ ¼ýÀÚ¸¦ ³ªÅ¸³½´Ù. ¿©±â¼ ÀÎÀÚ°ªÀ» È£ÃâÇÏ´Â "$"À» ºÙÀÌ°Ô µÇ¸é, ¸¶Áö¸· Çʵ尪ÀÌ Ãâ·ÂÀÌ µÇ´Â °ÍÀÌ´Ù. 4. ¶Ç´Ù¸¥ ¿ä¾à ÆäÀÌÁö ¶
¹è¿ÀÌ ½â ÈǸ¢ÇÏ°Ô Áö¿øµÇ´Âµ¥ ¼¼ºÎ µ¿ÀÛÀÌ Á» ¿¹»ó ¹ÛÀÔ´Ï´Ù. 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¿¡ µé¾î°¥ °Ì´Ï´Ù.
|
Of all forms of caution, caution in love is the most fatal. |