· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
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. awk ÇÁ·Î±×·¥

3.1. ÀϹÝÀûÀÎ awk ÀÇ ¿ëµµ ¹× »ç¿ë¹æ¹ý(Using Model)

awk´Â ÀϹÝÀûÀ¸·Î µ¥ÀÌÅÍ ¶Ç´Â À¯»ç µ¥ÀÌÅ;ç½ÄÀÇ ÆÄÀÏ ¹× ÀڷḦ ó¸®Çϴµ¥ ¾²ÀδÙ. ¿¹¸¦ µé¾î Åë°è Àڷᳪ, text Çü½ÄÀÇ access(MicroSoft), ½ÇÇè½ÄÀÇ °è»ê °á°ú µîÀ» Åë°è¸¦ ³½´Ù´øÁö ºñ±³ ºÐ¼® ÇÑ´Ù´øÁö ´Ù¸¥ ÇüÅÂÀÇ ¹®¼­(°á°ú¹°)·Î º¯È¯ÇÏ´Â µîÀÇ ÀÛ¾÷¿¡ »ç¿ëµÈ´Ù. µû¶ó¼­ ÀÌ·¯ÇÑ ÀÛ¾÷¿¡ À־ awk´Â 100%ÀÇ ÀÛ¾÷È¿À²À» °¡Á®¿Ã¼ö ÀÖ´Ù. ¹°·Ð perlÀ̳ª, À¯»çÇÁ·Î±×·¥À» »ç¿ëÇصµ ÁÁÁö¸¸, Ưº°ÇÏ°Ô º¹ÀâÇÑ ±¸Á¶¸¦ °¡ÁöÁö ¾Ê´Â´Ù¸é, ±»ÀÌ "Åä³¢ Àâ´Âµ¥, ¼ÒÀâ´Â Ä®À» ¾µ ÀÌÀ¯´Â ¾ø´Ù"´Â °ÍÀÌ´Ù. awk¸¸À¸·Î ÃæºÐÇϸç, ¶ÇÇÑ sed³ª ´Ù¸¥ GNU À¯Æ¿À» º´ÇÕÇÏ¿© »ç¿ëÇÏ´Â °ÍÀÌ ´ÜÀÏ perl ÇÁ·Î±×·¥À̳ª, ±âŸ µ¥ÀÌÅÍ Ã³¸® ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ »ç¿ëÇÏ´Â °Íº¸´Ù ÈξÀ ³´±â ¶§¹®ÀÌ´Ù.

°³ÀÎÀûÀÎ °üÁ¡À¸·Î´Â GNU À¯Æ¿µéÀº »ó´çÈ÷ À¯¿¬ÇÏ°í(flexible)ÇÏ°í, °£ÆíÇÏÁö¸¸, ½ÇÁ¦ÀûÀ¸·Î °³°³ÀÇ GNU À¯Æ¿·Î ÀÛ¾÷À» Çϱ⿡´Â »ó´çÈ÷ ÈûÀÌ µç´Ù. ±×·¯³ª, À̵é GNU À¯Æ¿µéÀ» ÀûÀýÇÏ°Ô Á¶ÇÕÇÏ¿© »ç¿ëÇϸé, ±âÁ¸ÀÇ ¿©Å¸ ÇÁ·Î±×·¥µé°ú µ¿µîÇÑ ±â´ÉÀ» ¹ßÈÖÇÏ´Â ¸ÚÁø ÇÁ·Î±×·¥ÀÌ µÉ ¼ö ÀÖ´Â °ÍÀÌ´Ù.

±×·¡¼­ º¸ÅëÀÇ ÀÛ¾÷Àº awk Çϳª¸¸ °¡Áö°í, ¸ðµÎ ´Ù ó¸®ÇÒ ¼ö°¡ ¾ø´Ù. ÇÏ°íÀÚ ÇÏ´Â ÀÏÀÇ ÀϺκÐÀ» awk°¡ ¸ÃÀ»¼ö ÀÖ´Â °ÍÀÌ´Ù. º¸ÅëÀÇ ÀϹÝÀûÀÎ awkÀÇ »ç¿ëÀº ´ÙÀ½°ú °°Àº ´Ü°è¸¦ °ÅÄ¡°Ô µÈ´Ù.

  1. egrep ¹× grep À» ÀÌ¿ëÇÑ µ¥ÀÌÅÍ ÆÄÀÏÀÇ ±¸Á¶ È®ÀÎÀ» ÇÑ´Ù.
  2. Á¤±ÔÈ­°¡ °¡´ÉÇÑÁö¸¦ È®ÀÎÇÏ°í, sed·Î Å×½ºÆ® Çغ»´Ù. awk°¡ ó¸®ÇÒ¸¸Å­ Á¤±ÔÈ­°¡ µÇ¾î ÀÖ´Ù¸é, ¹Ù·Î awk¸¦ »ç¿ëÇÑ´Ù.
  3. 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 ¸¦ ±¸ºÐÇÏ´Â °Íµµ °ø¹é¹®ÀÚ°¡ ¾Æ´Ò¼öµµ ÀÖ´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½ÀÇ ¿¹Á¦¸¦ º¸¸é¼­ ÀÌÇظ¦ ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

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.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

3.3. 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.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. ¶Ç´Ù¸¥ ¿ä¾à ÆäÀÌÁö

  1. awk´Â Á÷Á¢ »ç¿ëÀڷκÎÅÍ ÀÔ·ÂÀ» ¹Þ°Å³ª ¾Æ´Ï¸é ÁöÁ¤ÇÑ ÆÄÀÏÀ» °¡°øÇÏ¿© Ç¥ÁØ Ãâ·ÂÇÑ´Ù. Ç¥ÁØ Ãâ·ÂÀ» ¸®´ÙÀÌ·º¼ÇÇÒ ¼ö ÀÖ´Ù

  2. »ç¿ë¹ý
    • 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

  3. ¿É¼Ç
    • -Fc : field separator ÁöÁ¤
      • c´Â ÇÊµå »çÀ̸¦ ±¸ºÐÇÏ´Â ±¸ºÐÀÚÀÌ´Ù
      • Á÷Á¢ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é °ø¹éÀ» ±âÁØÀ¸·Î ÇÑ´Ù
      • ½Ã½ºÅÛ º¯¼ö FS¸¦ ÁöÁ¤ÇÏ´Â °Í°ú °°Àº È¿°ú¸¦ Áö´Ñ´Ù
    • -v º¯¼ö = °ª
      • ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇϱâ Àü¿¡ ¹Ì¸® º¯¼ö¸¦ ÁöÁ¤ÇÏ¿© ÁØ´Ù
      • $¸¦ ¾²Áö ¾Ê°í º¯¼ö À̸§¸¸ ¾²¸é µÈ´Ù. C¿¡¼­ #defineó·³ »ý°¢ÇÏ¸é µÉ °ÍÀÌ´Ù.
    • -f ½ºÅ©¸³Æ® ÆÄÀÏ
      • ½ºÅ©¸³Æ®¸¦ ÆÄÀÏ¿¡¼­ °¡Á®¿Â´Ù
      • -f ¿É¼ÇÀ» ¿©·¯¹ø »ç¿ëÇÏ¿© ¿©·¯°³ÀÇ ½ºÅ©¸³Æ® ÆÄÀÏÀ» µ¿½Ã¿¡ ºÒ·¯¿Í ÁöÁ¤ÇÑ ÆÄÀÏ¿¡ Àû¿ëÇÒ ¼ö ÀÖ´Ù

  4. ½ºÅ©¸³Æ®
    • ÆÐÅÏ { µ¿ÀÛ }
      • Ä¿¸Çµå ¶óÀο¡¼­´Â ÆÐÅÏ, µ¿ÀÛ Àüü¸¦ ´ÜÀÏ µû¿ÈÇ¥·Î ¹­´Â´Ù
      • ÆÐÅϸ¸ ÀÖ´Â °æ¿ì : ÆÐÅÏ°ú ÀÏÄ¡ÇÏ´Â ·¹ÄÚµå(¶óÀÎ)¸¦ È­¸é¿¡ Ãâ·ÂÇÑ´Ù
      • µ¿ÀÛ¸¸ ÀÖ´Â °æ¿ì : ¸ðµç ·¹ÄÚµå(¶óÀÎ)°¡ µ¿ÀÛÀÇ ´ë»óÀÌ µÈ´Ù

    • ÆÐÅÏ
      • /Á¤±ÔÇ¥Çö½Ä/ sed°¡ Áö¿øÇÏÁö ¾Ê´Â +, ?, |, ( ) µîÀÇ ¸ÞŸ¹®ÀÚµµ Áö¿øÇÑ´Ù ¶ÇÇÑ ^, $¸¦ °¢ ÇʵåÀÇ Ã³À½°ú ³¡À» ÀǹÌÇϵµ·Ï »ç¿ëÇÒ ¼öµµ ÀÖ´Ù
      • ºñ±³¿¬»ê ¼ýÀÚ ±âÁØ, ¾ËÆĺª ±âÁØ ¸ðµÎ »ç¿ë °¡´ÉÇÏ´Ù
      • ÆÐÅÏ ¸ÅĪ ¿¬»ê ~ : ÀÏÄ¡ÇÏ´Â ºÎºÐÀ» ³ªÅ¸³½´Ù !~ : ÀÏÄ¡ÇÏÁö ¾Ê´Â ºÎºÐÀ» ³ªÅ¸³½´Ù
      • BEGIN ù ¹ø° ·¹Äڵ尡 ÀÐÇôÁö±â Àü¿¡ ¾î¶² µ¿ÀÛÀ» Á¤ÀÇÇÏ¿© »ç¿ëÇÏ°í ½ÍÀ» ¶§ »ç¿ëÇÑ´Ù
      • END ¸¶Áö¸· ·¹Äڵ尡 ¸ðµÎ ÀÐÇôÁø ÈÄ ¾î¶² µ¿ÀÛÀ» Á¤ÀÇÇÏ¿© ½ÇÇàÇÏ°í ½ÍÀ» ¶§ »ç¿ëÇÑ´Ù

  5. µ¿ÀÛ
    • µ¿ÀÛÀº ¸ðµÎ { }·Î µÑ·¯½Î¾ß ÇÑ´Ù
    • ¿¹Á¦
      • 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

  6. awk ½Ã½ºÅÛ º¯¼ö
    FILENAME ÇöÀç ÆÄÀϸí $0 ÀÔ·Â ·¹ÄÚµå
    FSÀÔ·Â ÇÊµå ±¸ºÐ µðÆúÆ® : °ø¹é $n ÀÔ·Â ·¹ÄÚµåÀÇ N¹ø° Çʵå
    NFÇöÀç ·¹ÄÚµå ÇÊµå °¹¼ö ARGC Ä¿¸Çµå ¶óÀÎÀÇ ÀÎÀÚ °¹¼ö
    NRÇöÀç ·¹ÄÚµå ¹øÈ£ ARGV Ä¿¸Çµå ¶óÀÎ ÀÎÀÚ¸¦ Æ÷ÇÔÇÏ´Â ¹è¿­
    OFMT¼ýÀÚ¿¡ ´ëÇÑ Ãâ·Â Æ÷¸Ë µðÆúÆ® : %.6g ENVIRON ȯ°æº¯¼öµéÀ» ¸ð¾ÆµÐ °ü°èÇü ¹è¿­
    OFSÃâ·Â ÇÊµå ±¸ºÐ µðÆúÆ® : ºóÁÙ FNR NR°ú µ¿ÀÏ ´ÜÁö ÇöÀç ÆÄÀÏ¿¡ Àû¿ëµÈ´Ù´Â Á¡ÀÌ ´Ù¸§
    ORSÃâ·Â ·¹ÄÚµå ±¸ºÐ µðÆúÆ® : newline RSTART ÁöÁ¤ÇÑ ¸ÅĪ ¿¬»êÀ» ¸¸Á·ÇÏ´Â ¹®ÀÚ¿­ÀÇ ¸Ç ¾ÕºÎºÐ
    RSÀÔ·Â ·¹ÄÚµå ±¸ºÐ µðÆúÆ® : newline RLENGTH ÁöÁ¤ÇÑ ¸ÅĪ ¿¬»êÀ» ¸¸Á·ÇÏ´Â ¹®ÀÚ¿­ÀÇ ±æÀÌ

  7. awk ¿¬»êÀÚ
    • »ê¼ú : =, +=, -=, *=, /=, %= Á¶°Ç : ? : ³í¸® : ||, &&, ! ÆÐÅÏ : ~, !~
    • ºñ±³ : <, <=, >, >=, !=,== Áõ°¨ : ++, -- ÇʵåÂüÁ¶ : $
  8. Á¦¾î¹®(CÀÇ Á¦¾î¹®°ú °°´Ù)
    • break
    • continue
    • do {½ÇÇà} while (Á¶°Ç)
    • exit
    • for (°ü°èÇü ¹è¿­ÀÇ ¿ä¼Ò) {½ÇÇà}
    • ÆÞÀÇ foreach¿Í °°´Ù
    • if (Á¶°Ç) {½ÇÇà} else {½ÇÇà}
    • return
    • while

  9. 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) ½Ã½ºÅÛ ³»ºÎ ¸í·É¾î¸¦ ½ÇÇàÇÑ´Ù

  10. °£´ÜÇÑ ¿¹
    • 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¿¡ µé¾î°¥ °Ì´Ï´Ù.



ID
Password
Join
Courage is your greatest present need.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2012-03-12 16:02:06
Processing time 0.0136 sec