[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