#!/bin/bash # strip-comment.sh: C ¼Ò½º¿¡¼ ÁÖ¼®(/* ÁÖ¼® */)À» Á¦°ÅÇØ ÁÝ´Ï´Ù. E_NOARGS=65 E_ARGERROR=66 E_WRONG_FILE_TYPE=67 if [ $# -eq "$E_NOARGS" ] then echo "»ç¿ë¹ý: `basename $0` C-program-file" >&2 # ¿¡·¯ ¸Þ¼¼Áö´Â Ç¥ÁØÃâ·ÂÀ¸·Î. exit $E_ARGERROR fi # ÆÄÀÏ Å¸ÀÔÀÌ ¸Â´ÂÁö È®ÀÎ. type=`eval file $1 | awk '{ print $2, $3, $4, $5 }'` # "file $1" ÀÌ ÆÄÀÏ Å¸ÀÔÀ» ¿¡ÄÚÇØ ÁØ ´ÙÀ½... # awk °¡ ù ¹ø° ÇʵåÀÎ ÆÄÀÏÀ̸§À» Áö¿öÁÖ°í... # ±× °á°ú°¡ "type" º¯¼ö·Î µé¾î°©´Ï´Ù. correct_type="ASCII C program text" if [ "$type" != "$correct_type" ] then echo echo "ÀÌ ½ºÅ©¸³Æ®´Â ¿ÀÁ÷ C ¼Ò½º ÆÄÀÏ¿¡ ´ëÇؼ¸¸ µ¿ÀÛÇÕ´Ï´Ù." echo exit $E_WRONG_FILE_TYPE fi # ¾à°£Àº ½Åºñ½º·¯¿ö º¸ÀÌ´Â sed ½ºÅ©¸³Æ®: #-------- sed ' /^\/\*/d /.*\/\*/d ' $1 #-------- # sed ÀÇ ±âº»¿¡ ´ëÇؼ ¸î ½Ã°£¸¸ ÅõÀÚ¸¦ Çϸé ÀÌÇØÇϱ⠽±½À´Ï´Ù. # ÁÖ¼®ÀÌ ÄÚµå¿Í °°Àº ÁÙ¿¡ ÀÖ´Â °æ¿ì¸¦ ó¸®Çϱâ À§Çؼ´Â # Ãß°¡ÀûÀÎ sed ½ºÅ©¸³Æ®°¡ ÇÊ¿äÇÕ´Ï´Ù. # ¾à°£Àº ¾î·Á¿ï ¼öµµ ÀÖÁö¸¸ µ¶ÀÚµéÀ» À§Çؼ ¿¬½À¹®Á¦·Î ³²°Ü ³õ½À´Ï´Ù. # ¶Ç, À§ ÄÚµå´Â ¿ì¸®°¡ ¹Ù¶óÁö ¾Ê´ø °á°ú·Î¼ # "*/" À̳ª "/*" ÀÎ ÁÙµµ Áö¿ö¹ö¸³´Ï´Ù. exit 0 # -------------------------------------------------------------------- # ´ÙÀ½ÀÇ ÄÚµåµéÀº À§¿¡¼ 'exit 0'À̶ó°í Ç߱⠶§¹®¿¡ ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù. # Stephane Chazelas °¡ Á¦¾ÈÇÑ ´Ù¸¥ ¹æ¹ý: usage() { echo "»ç¿ë¹ý: `basename $0` C-program-file" >&2 exit 1 } WEIRD=`echo -n -e '\377'` # ȤÀº WEIRD=$'\377' [[ $# -eq 1 ]] || usage case `file "$1"` in *"C program text"*) sed -e "s%/\*%${WEIRD}%g;s%\*/%${WEIRD}%g" "$1" \ | tr '\377\n' '\n\377' \ | sed -ne 'p;n' \ | tr -d '\n' | tr '\377' '\n';; *) usage;; esac # ÀÌ°Í ¿ª½Ã ´ÙÀ½°ú °°Àº °æ¿ì¿¡´Â ¿Àµ¿ÀÛÀ» ÇÕ´Ï´Ù: # printf("/*"); # ³ª # /* /* ÁÖ¼®¿¡ ÁÖ¼®ÀÌ µé¾î°¨ */ # # Ưº°ÇÑ °æ¿ìµé(¹®ÀÚ¿¿¡ µé¾î ÀÖ´Â ÁÖ¼®, # \"³ª \\" ¸¦ Æ÷ÇÔÇÑ ¹®ÀÚ¿¿¡ µé¾î ÀÖ´Â ÁÖ¼®...)À» ¸ðµÎ ó¸®ÇÒ ¼ö ÀÖ´Â # À¯ÀÏÇÑ ¹æ¹ýÀº C Æļ(¾Æ¸¶µµ lex ³ª yacc?)¸¦ ÀÛ¼ºÇÏ´Â °ÍÀÔ´Ï´Ù. exit 0