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