sed ³ª awk ½ºÅ©¸³Æ®(부록 B)´Â ¸í·É¾î ÁÙ¿¡¼ sed -e 'commands'¶ó°í Ä¡°Å³ª awk -e 'commands' ¶ó°í Ãļ ½ÇÇà ÇÒ ¼ö ÀÖ½À´Ï´Ù. bash ½ºÅ©¸³Æ® ¾È¿¡¼ »ç¿ëÇÏ°Ô µÇ¸é Á» ´õ °£´ÜÇϰí "Àç»ç¿ë"ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ¶ÇÇÑ sedÀÇ Ãâ·Â°ú awkÀÇ ÀÔ·ÂÀ» ÆÄÀÌÇÁ·Î ¿¬°áÇÏ´Â µîÀÇ sed¿Í awkÀÇ ±â´ÉÀ» ¿¬°áÇØ ¾µ ¼ö ÀÖ½À´Ï´Ù. ÀúÀåµÈ ½ÇÇà °¡´ÉÇÑ ÆÄÀÏÀ̶ó¸é ´Ù½Ã Ä¡Áö ¾Ê°í »¡¸® ½ÇÇà ½Ãų¼ö°¡ ÀÖ½À´Ï´Ù.
예 2-3. ½© ·¡ÆÛ(wrapper)
#!/bin/bash # ÆÄÀÏ¿¡¼ ºóÁÙÀ» ¾ø¾Ö´Â °£´ÜÇÑ ½ºÅ©¸³Æ® # ÆÄ¶ó¹ÌÅÍ È®ÀÎ ¾ÈÇÔ # ÄÁ¸Çµå ¶óÀο¡¼ # sed -e '/^$/d $1' filename # Çϴ°Ŷû ¶È°°À½ # '^' ´Â ÁÙÀÇ Ã³À½À» ³ªÅ¸³¿ # '$' ´Â ÁÙÀÇ ³¡À» ³ªÅ¸³¿ # 'd' ´Â Áö¿ì´Â °ÍÀ» ³ªÅ¸³¿ sed -e /^$/d $1 |
예 2-4. Á¶±Ý º¹ÀâÇÑ ½© ·¡ÆÛ(wrapper)
#!/bin/bash # "subst", ÆÄÀÏÀÇ ÇÑ ÆÐÅÏÀ» ´Ù¸¥ ÆÐÅÏÀ¸·Î ¹Ù²ãÁÖ´Â ½ºÅ©¸³Æ® # Áï, "subst Smith Jones letter.txt". if [ $# -ne 3 ] # ½ºÅ©¸³Æ®·Î ³Ñ°ÜÁø ÀÎÀÚÀÇ °¹¼ö¸¦ Å×½ºÆ®(Ç×»ó ÀÌ·¸°Ô Çϼ¼¿ä.) then echo "»ç¿ë¹ý: `basename $0` old-pattern new-pattern filename" exit 1 fi old_pattern=$1 new_pattern=$2 if [ -f $3 ] then file_name=$3 else echo "\"$3\" Àº ¾ø´Â ÆÄÀÏÀÔ´Ï´Ù." exit 2 fi # ¿©±â°¡ °¡Àå Áß¿äÇÑ ºÎºÐÀÔ´Ï´Ù. sed -e "s/$old_pattern/$new_pattern/" $file_name # 's'´Â sed¿¡¼ ¹Ù²Ù±â(substitution) ¸í·É¾îÀ̰í, # /pattern/ Àº ÁÖ¼Ò ¸ÅĪÀ» ½ÇÇà½Ãŵ´Ï´Ù. # ´õ ÀÚ¼¼ÇÑ ¼³¸íÀº 'sed'ÀÇ ¹®¼¸¦ Àо¼¼¿ä. exit 0 # ½ºÅ©¸³Æ®ÀÇ ½ÇÇàÀÌ ¼º°øÀ̶ó¸é 0À» ¸®ÅÏ |
예 2-5. awk ½ºÅ©¸³Æ® shell wrapper
#!/bin/bash # ƯÁ¤ ÆÄÀÏ¿¡¼ ÁÖ¾îÁø ¿À» ´Ù ´õÇϱâ. if [ $# -ne 2 ] # ¸í·É¾î ÁÙ ÀÎÀÚ ¼ö°¡ Àû´çÇÑÁö È®ÀÎ. then echo "»ç¿ë¹ý: `basename $0` filename column-number" exit 1 fi filename=$1 column_number=$2 # ½© º¯¼ö¸¦ awk¿¡ ³Ñ±â´Â °ÍÀº ¾à°£ ±î´Ù·Ó½À´Ï´Ù. # ´õ ÀÚ¼¼ÇÑ »çÇ×Àº awk ¹®¼¸¦ Âü°íÇϼ¼¿ä. # ¿©·¯ÁÙÀÇ awk ½ºÅ©¸³Æ®´Â awk ' ..... ' ó·³ ºÎ¸£¸é µË´Ï´Ù. # awk ½ºÅ©¸³Æ® ½ÃÀÛ. # ----------------------------- awk ' { total += $'"${column_number}"' } END { print total } ' $filename # ----------------------------- # awk ½ºÅ©¸³Æ® ³¡. exit 0 |
¿¬½À¹®Á¦. °£´ÜÇÑ ÀÛ¾÷À» ¼öÇàÇÏ´Â ½ºÅ©¸³Æ®¸¦ ¸¸µé¾î º¸¼¼¿ä.