B / Y / U / S
HOME À¥ È£½ºÆà µµ¸ÞÀÎ ¸Å´º¾ó °í°´Áö¿ø ¼³Á¤Á¤º¸ °èÁ¤½Åû 2024-12-30 Monday 
À¥ È£½ºÆÃ
# °øÁö »çÇ×
# ÀÚÁÖ ¹¯´Â Áú¹®
# Áú¹®°ú ´äº¯
# °¡ÀÔ ¹®ÀÇ
Ä¿¹Â´ÏƼ
# ÀÚÀ¯°Ô½ÃÆÇ
# ¸®´ª½ºÆÁ
# ¾ÆÀÌÅ¥ Å×½ºÆ®
# ³»È¨ ¼Ò°³
# °Ö·¯¸®
# ÀÚ·á½Ç

  ¸®´ª½ºÆÁ  Go Unix Power Tools Online Book Go Bash Guide
Read No. 198 article 2005-03-06 00:20:08
NickName   Ç®ºñ´©
Subject   awk
̉˜ : http://database.sarang.net/study/awk/awk.html
       http://database.sarang.net/study/


AWK

  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  º¯¼ö = °ª
      • ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇϱâ Àü¿¡ ¹Ì¸® º¯¼ö¸¦ ÁöÁ¤ÇÏ¿© ÁØ´Ù
    • -f  ½ºÅ©¸³Æ® ÆÄÀÏ
      • ½ºÅ©¸³Æ®¸¦ ÆÄÀÏ¿¡¼­ °¡Á®¿Â´Ù  
      • -f ¿É¼ÇÀ» ¿©·¯¹ø »ç¿ëÇÏ¿© ¿©·¯°³ÀÇ ½ºÅ©¸³Æ® ÆÄÀÏÀ» µ¿½Ã¿¡ ºÒ·¯¿Í ÁöÁ¤ÇÑ ÆÄÀÏ¿¡ Àû¿ëÇÒ ¼ö ÀÖ´Ù 
  4. ½ºÅ©¸³Æ®
    • ÆÐÅÏ { µ¿ÀÛ }
      Ä¿¸Çµå ¶óÀο¡¼­´Â ÆÐÅÏ, µ¿ÀÛ Àüü¸¦ ´ÜÀÏ µû¿ÈÇ¥·Î ¹­´Â´Ù
      • ÆÐÅϸ¸ ÀÖ´Â °æ¿ì : ÆÐÅÏ°ú ÀÏÄ¡ÇÏ´Â ·¹ÄÚµå(¶óÀÎ)¸¦ È­¸é¿¡ Ãâ·ÂÇÑ´Ù 
      • µ¿ÀÛ¸¸ ÀÖ´Â °æ¿ì : ¸ðµç ·¹ÄÚµå(¶óÀÎ)°¡ µ¿ÀÛÀÇ ´ë»óÀÌ µÈ´Ù
    • ÆÐÅÏ
      1. /Á¤±ÔÇ¥Çö½Ä/
        sed°¡ Áö¿øÇÏÁö ¾Ê´Â +, ?, |, ( ) µîÀÇ ¸ÞŸ¹®ÀÚµµ Áö¿øÇÑ´Ù   ¶ÇÇÑ
        ^, $¸¦ °¢ ÇʵåÀÇ Ã³À½°ú ³¡À» ÀǹÌÇϵµ·Ï »ç¿ëÇÒ ¼öµµ ÀÖ´Ù
      2. ºñ±³¿¬»ê
        ¼ýÀÚ ±âÁØ, ¾ËÆĺª ±âÁØ ¸ðµÎ »ç¿ë °¡´ÉÇÏ´Ù 
      3. ÆÐÅÏ ¸ÅĪ ¿¬»ê
        ~  :  ÀÏÄ¡ÇÏ´Â ºÎºÐÀ» ³ªÅ¸³½´Ù
        !~ :  ÀÏÄ¡ÇÏÁö ¾Ê´Â ºÎºÐÀ» ³ªÅ¸³½´Ù
      4. BEGIN
        ù ¹ø° ·¹Äڵ尡 ÀÐÇôÁö±â Àü¿¡ ¾î¶² µ¿ÀÛÀ» Á¤ÀÇÇÏ¿© »ç¿ëÇÏ°í ½ÍÀ» ¶§ »ç¿ëÇÑ´Ù 
      5. END
        ¸¶Áö¸· ·¹Äڵ尡 ¸ðµÎ ÀÐÇôÁø ÈÄ ¾î¶² µ¿ÀÛÀ» Á¤ÀÇÇÏ¿© ½ÇÇàÇÏ°í ½ÍÀ» ¶§ »ç¿ëÇÑ´Ù 
    • µ¿ÀÛ
      • µ¿ÀÛÀº ¸ðµÎ { }·Î µÑ·¯½Î¾ß ÇÑ´Ù
      • ¿¹Á¦
        • 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
  5. awk ½Ã½ºÅÛ º¯¼ö

FILENAME

ÇöÀç ÆÄÀϸí

$0

ÀÔ·Â ·¹ÄÚµå

FS

ÀÔ·Â ÇÊµå ±¸ºÐ
µðÆúÆ® :  °ø¹é 

$n

ÀÔ·Â ·¹ÄÚµåÀÇ N¹ø° Çʵå

NF

ÇöÀç ·¹ÄÚµå ÇÊµå °¹¼ö

ARGC

Ä¿¸Çµå ¶óÀÎÀÇ ÀÎÀÚ °¹¼ö

NR

ÇöÀç ·¹ÄÚµå ¹øÈ£

ARGV

Ä¿¸Çµå ¶óÀÎ ÀÎÀÚ¸¦ Æ÷ÇÔÇÏ´Â ¹è¿­

OFMT

¼ýÀÚ¿¡ ´ëÇÑ Ãâ·Â Æ÷¸Ë
µðÆúÆ® :  %.6g 

ENVIRON

ȯ°æ º¯¼öµéÀ» ¸ð¾ÆµÐ °ü°èÇü ¹è¿­

OFS

Ãâ·Â ÇÊµå ±¸ºÐ
µðÆúÆ® :  ºóÁÙ 

FNR

NR°ú µ¿ÀÏ
´ÜÁö ÇöÀç ÆÄÀÏ¿¡ Àû¿ëµÈ´Ù´Â Á¡ÀÌ ´Ù¸§ 

ORS

Ãâ·Â ·¹ÄÚµå ±¸ºÐ
µðÆúÆ® :  newline 

RSTART

ÁöÁ¤ÇÑ ¸ÅĪ ¿¬»êÀ» ¸¸Á·ÇÏ´Â ¹®ÀÚ¿­ÀÇ ¸Ç ¾ÕºÎºÐ

RS

ÀÔ·Â ·¹ÄÚµå ±¸ºÐ
µðÆúÆ® :  newline 

RLENGTH

ÁöÁ¤ÇÑ ¸ÅĪ ¿¬»êÀ» ¸¸Á·ÇÏ´Â ¹®ÀÚ¿­ÀÇ ±æÀÌ

        
  • awk ¿¬»êÀÚ
  • »ê¼ú : =, +=, -=, *=, /=, %=

    Á¶°Ç : ? :

    ³í¸® : ||, &&, !

    ÆÐÅÏ : ~, !~

    ºñ±³ : <, <=, >, >=, !=,==

    Áõ°¨ : ++, --

    ÇʵåÂüÁ¶ : $

     

            
  • Á¦¾î¹®(CÀÇ Á¦¾î¹®°ú °°´Ù)
    • break
    • continue
    • do {½ÇÇà} while (Á¶°Ç)
    • exit
    • for (°ü°èÇü ¹è¿­ÀÇ ¿ä¼Ò) {½ÇÇà}
      ÆÞÀÇ foreach¿Í °°´Ù
    • if (Á¶°Ç) {½ÇÇà} else {½ÇÇà}
    • return
    • while
  • 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)
        ½Ã½ºÅÛ ³»ºÎ ¸í·É¾î¸¦ ½ÇÇàÇÑ´Ù 
  • °£´ÜÇÑ ¿¹
    • 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 ' 
      ÁöÁ¤ÇÑ ÆÄÀÏÀÇ Â¦¼ö¹ø°ÀÇ ¶óÀθ¸À» Ãâ·ÂÇØ Áش٠

    Âü°í¼­Àû :  sed & awk, Dale Daugherty, O'reilly

  • Regist Addr [ 211.111.247.156 ] ¸ñ·Ïº¸±â À­±Û ¾Æ·§±Û
    Á¤±ÔÇ¥Çö½Ä [ »ó¼¼ °Ë»ö ]
    Page Loading [ 0.05 Sec ] SQL Time [ 0 Sec ]

    Copyleft 1999-2024 by JSBoard Open Project
    Theme Designed by IDOO And follow GPL2

    °³ÀÎÁ¤º¸ Ãë±Þ¹æħ ÀÌ¿ë ¾à°ü »çÀÌÆ® ¸Ê ¾îµå¹Î °ü¸®