· 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
You have an ability to sense and know higher truth.


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