2.2. ½© ·¡ÆÛ, ÀÚ°¡ ½ÇÇà ½ºÅ©¸³Æ®(Shell wrapper, self-executing script)

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

¿¬½À¹®Á¦. °£´ÜÇÑ ÀÛ¾÷À» ¼öÇàÇÏ´Â ½ºÅ©¸³Æ®¸¦ ¸¸µé¾î º¸¼¼¿ä.