"·¡ÆÛ"¶õ ½Ã½ºÅÛ ¸í·É¾î³ª À¯Æ¿¸®Æ¼µéÀ» ÇØ´ç ¸Å°³º¯¼öµé°ú ÇÔ²² ½© ½ºÅ©¸³Æ®·Î ¸¸µé¾î µÎ´Â °ÍÀ» ¸»ÇÕ´Ï´Ù. ¸í·É¾îÁÙ¿¡¼ ¾ÆÁÖ º¹ÀâÇÏ°Ô ºÎ¸¦ ¸í·É¾î¸¦ ½ºÅ©¸³Æ®·Î ¸¸µé¾î µÎ¸é ½ÇÇà ½Ãų ¶§ ¾ÆÁÖ °£´ÜÇØ Áý´Ï´Ù. ƯÈ÷ sed¿Í awk¿¡ ÀÌ ½© ·¡ÆÛ¸¦ ¾²¸é ¾ÆÁÖ ÁÁ½À´Ï´Ù.
sed ³ª awk ½ºÅ©¸³Æ®´Â ¸í·É¾î ÁÙ¿¡¼ sed -e 'commands'¶ó°í Ä¡°Å³ª awk 'commands'À̶ó°í Ãļ ½ÇÇà ½Ãų ¼ö ÀÖ½À´Ï´Ù. ÀÌ·± ½ºÅ©¸³Æ®¸¦ Bash ½ºÅ©¸³Æ® ¾È¿¡¼ »ç¿ëÇÏ°Ô µÇ¸é Á» ´õ °£´ÜÇÏ°Ô ¾µ ¼ö ÀÖ°í "Àç»ç¿ë"ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î sedÀÇ Ãâ·Â°ú awkÀÇ ÀÔ·ÂÀ» ÆÄÀÌÇÁ·Î ¿¬°áÇÏ´Â °Íó·³ sed¿Í awkÀÇ ±â´ÉÀ» ¿¬°áÇØ¼µµ ¾µ ¼öµµ ÀÖ½À´Ï´Ù. ÀúÀåµÈ ½ÇÇà ÆÄÀÏÀ̶ó¸é ´Ù½Ã Ä¡´Â ºÒÆíÇÔ ¾øÀÌ ¿ø·¡ Çüųª ¾à°£ º¯°æµÈ ÇüÅ·Π°è¼Ó ½ÇÇà ½Ãų¼ö°¡ ÀÖ½À´Ï´Ù.
¿¹ 34-1. ½© ·¡ÆÛ(shell wrapper)
#!/bin/bash # ÆÄÀÏ¿¡¼ ºó ÁÙÀ» Áö¿öÁÖ´Â °£´ÜÇÑ ½ºÅ©¸³Æ®. # ÀÎÀÚ È®ÀÎ ¾È ÇÔ. # ¸í·É¾îÁÙ¿¡¼ # sed -e '/^$/d' filename # À̶ó°í ÇÏ´Â °Í°ú ¶È°°À½. sed -e /^$/d "$1" # '-e'´Â ´ÙÀ½¿¡ ³ª¿À´Â °ÍÀ» "ÆíÁý" ¸í·É¾î·Î ÇØ¼®(¿©±â¼´Â ³Ö¾îµµ µÇ°í ¾È ³Ö¾îµµ µÊ). # '^'´Â Á٠óÀ½, '$'´Â ÁÙ ³¡. # Á٠óÀ½°ú ÁÙ ³¡ »çÀÌ¿¡ ¾Æ¹« °Íµµ ¾ø´Â °Í(ºó ÁÙ)°ú ÀÏÄ¡. # 'd' ´Â »èÁ¦ ¸í·É¾î. # ¸í·É¾îÁÙ ÀÎÀÚ¸¦ Äõ¿ìÆ® ÇØ ÁÖ¸é ÆÄÀÏÀ̸§¿¡ #+ °ø¹é¹®ÀÚ³ª Ư¼ö¹®ÀÚ°¡ µé¾î°¡µµ »ó°ü¾ø½À´Ï´Ù. exit 0 |
¿¹ 34-2. Á¶±Ý º¹ÀâÇÑ ½© ·¡ÆÛ(shell wapper)
#!/bin/bash # "subst", ÆÄÀÏ¿¡¼ ¾î¶² ÆÐÅÏÀ» ´Ù¸¥ ÆÐÅÏÀ¸·Î ¹Ù²ãÁÖ´Â ½ºÅ©¸³Æ®. # Áï, "subst Smith Jones letter.txt". ARGS=3 E_BADARGS=65 # ÇÊ¿äÇÑ ÀÎÀÚ°¡ ºüÁ®ÀÖÀ½. if [ $# -ne "$ARGS" ] # ½ºÅ©¸³Æ®·Î ³Ñ°ÜÁø ÀÎÀÚÀÇ °¹¼ö¸¦ È®ÀÎ(Ç×»ó ÀÌ·¸°Ô Çϼ¼¿ä). then echo "»ç¿ë¹ý: `basename $0` old-pattern new-pattern filename" exit $E_BADARGS fi old_pattern=$1 new_pattern=$2 if [ -f "$3" ] then file_name=$3 else echo "\"$3\" Àº ¾ø´Â ÆÄÀÏÀÔ´Ï´Ù." exit $E_BADARGS fi # ¿©±â°¡ °¡Àå Áß¿äÇÑ ºÎºÐÀÔ´Ï´Ù. sed -e "s/$old_pattern/$new_pattern/g" $file_name # 's'´Â sedÀÇ Ä¡È¯(substitution) ¸í·É¾îÀ̰í, # /pattern/ Àº ÁÖ¼Ò ¸ÅĪÀ» ½ÇÇà½Ãŵ´Ï´Ù. # Àü¿ª(global) Ç÷¡±×ÀÎ "g"¸¦ ¾²¸é ´ÜÁö ù¹øÂ° ÀÏÄ¡ÇÏ´Â $old_pattern¸¸ #+ ġȯ½ÃŰÁö ¾Ê°í °¢ ÁÙ¿¡¼ ÀÏÄ¡ÇÏ´Â "¸ðµç" $old_patternÀ» ġȯ½Ãŵ´Ï´Ù. # ´õ ÀÚ¼¼ÇÑ ¼³¸íÀº 'sed' ¹®¼¸¦ Àо¼¼¿ä. exit 0 # ½ºÅ©¸³Æ®ÀÇ ½ÇÇàÀÌ ¼º°øÀ̶ó¸é 0À» ¸®ÅÏ. |
¿¹ 34-3. awk ½ºÅ©¸³Æ® ½© ·¡ÆÛ(shell wrapper)
#!/bin/bash # ´ë»ó ÆÄÀÏ¿¡¼ ÁÖ¾îÁø ¿À» ´Ù ´õÇϱâ. ARGS=2 E_WRONGARGS=65 if [ $# -ne "$ARGS" ] # ¸í·É¾îÁÙ ÀÎÀÚ ¼ö°¡ Àû´çÇÑÁö È®ÀÎ. then echo "»ç¿ë¹ý: `basename $0` filename column-number" exit $E_WRONGARGS fi filename=$1 column_number=$2 # ½© º¯¼ö¸¦ awk ¿¡°Ô ³Ñ±â´Â °ÍÀº ¾à°£ ±î´Ù·Ó½À´Ï´Ù. # ´õ ÀÚ¼¼ÇÑ °ÍÀº awk ¹®¼¸¦ Âü°íÇϼ¼¿ä. # ¿©·¯ÁÙÂ¥¸® awk ½ºÅ©¸³Æ®´Â awk ' ..... ' ó·³ ºÎ¸£¸é µË´Ï´Ù. # awk ½ºÅ©¸³Æ® ½ÃÀÛ. # ----------------------------- awk ' { total += $'"${column_number}"' } END { print total } ' "$filename" # ----------------------------- # awk ½ºÅ©¸³Æ® ³¡. # ½© ½ºÅ©¸³Æ®¿¡ ³»ÀåµÈ awk ½ºÅ©¸³Æ®¿¡°Ô ½© º¯¼ö¸¦ ³Ñ±â´Â °ÍÀº # ¾ÈÀüÇÏÁö ¾ÊÀ» ¼ö°¡ Àֱ⠶§¹®¿¡, Stephane Chazelas °¡ ´ÙÀ½°ú °°Àº ´ë¾ÈÀ» # Á¦¾ÈÇØ ÁÖ¾ú½À´Ï´Ù: # --------------------------------------- # awk -v column_number="$column_number" ' # { total += $column_number # } # END { # print total # }' "$filename" # --------------------------------------- exit 0 |
Çϳª·Î µÈ ¸¸´É ÅøÀ̳ª ½ºÀ§½º ±º¿ë Ä® °°Àº ±â´ÉÀÌ ÇÊ¿äÇÑ ½ºÅ©¸³Æ®µéÀ» À§ÇØ ÆÞÀÌ ÀÖ½À´Ï´Ù. ÆÞÀº sed¿Í awkÀÇ ±â´ÉÀ» ¹¾î C ÀÇ Å« ¼ºê¼ÂÀ¸·Î ¸¸µì´Ï´Ù. ¸ðµâ·Î µ¿ÀÛÇÏ¸ç °´Ã¼ ÁöÇâ ÇÁ·Î±×·¡¹Ö¿¡¼ ºÎ¾ý ½ÌÅ©´ë±îÁö ¸ðµç °ÍÀ» Áö¿øÇÕ´Ï´Ù. ªÀº ÆÞ ½ºÅ©¸³Æ®´Â ½© ½ºÅ©¸³Æ® »ó¿¡¼ È¿°úÀûÀ¸·Î ¾²ÀÏ ¼ö ÀÖ°í, ÆÞÀÌ ½© ½ºÅ©¸³Æ®¸¦ ¿ÏÀüÈ÷ ´ëüÇÒ ¼ö ÀÖÀ» °Å¶õ ¾ê±âµµ ÀÖÁö¸¸ ÀúÀÚ´Â ±×·¸°Ô »ý°¢ÇÏÁö ¾Ê½À´Ï´Ù.
¿¹ 34-4. Bash ½ºÅ©¸³Æ®¿¡ ³»ÀåµÈ ÆÞ
#!/bin/bash # ÆÞ ½ºÅ©¸³Æ®º¸´Ù ½© ½ºÅ©¸³Æ®°¡ ¸ÕÀú ¿Ã ¼ö ÀÖ½À´Ï´Ù. echo "\"$0\" ¿¡¼ ³»ÀåµÈ ÆÞ ½ºÅ©¸³Æ®º¸´Ù ¸ÕÀú µîÀå." echo "===============================================================" perl -e 'print "³»ÀåµÈ ÆÞ ½ºÅ©¸³Æ® ºÎºÐ.\n"' # sed ó·³ ÆÞµµ "-e" ¿É¼ÇÀ» ¾¹´Ï´Ù. echo "===============================================================" echo "ÇÏÁö¸¸, ½ºÅ©¸³Æ®¿¡´Â ½©À̳ª ½Ã½ºÅÛ ¸í·É¾î°¡ ¿Ã ¼öµµ ÀÖ½À´Ï´Ù." exit 0 |
½ÉÁö¾î´Â Bash ½ºÅ©¸³Æ®¿Í ÆÞ ½ºÅ©¸³Æ®¸¦ ÇÑ ÆÄÀÏ¿¡¼ °°ÀÌ ¾µ ¼öµµ ÀÖ½À´Ï´Ù. ±× ½ºÅ©¸³Æ®°¡ ¾î¶»°Ô ºÒ¸®³Ä¿¡ µû¶ó Bash ºÎºÐÀÌ ½ÇÇàµÉÁö ÆÞ ºÎºÐÀÌ ½ÇÇàµÉÁö°¡ °áÁ¤µË´Ï´Ù.
¿¹ 34-5. Çϳª·Î ¹ÀÎ Bash ½ºÅ©¸³Æ®¿Í ÆÞ ½ºÅ©¸³Æ®
#!/bin/bash # bashandperl.sh echo "½ºÅ©¸³Æ®ÀÇ Bash ÂÊ¿¡¼ º¸³»´Â ÃàÇÏ ¸Þ¼¼Áö." # ÀÌ ´ÙÀ½¿¡ Bash ¸í·É¾î°¡ ´õ ¿Ã ¼ö ÀÖ½À´Ï´Ù. exit 0 # Bash ºÎºÐÀÇ ³¡. # ======================================================= #!/usr/bin/perl # ÀÌ ºÎºÐÀº -x ¿É¼ÇÀ» Áà¾ß ½ÇÇàµË´Ï´Ù. print "½ºÅ©¸³Æ®ÀÇ ÆÞ ÂÊ¿¡¼ º¸³»´Â ÃàÇÏ ¸Þ¼¼Áö.\n"; # ÀÌ ´ÙÀ½¿¡ ÆÞ ¸í·É¾î°¡ ´õ ¿Ã ¼ö ÀÖ½À´Ï´Ù. # ÆÞ ºÎºÐÀÇ ³¡. |
bash$ bash bashandperl.sh ½ºÅ©¸³Æ®ÀÇ Bash ÂÊ¿¡¼ º¸³»´Â ÃàÇÏ ¸Þ¼¼Áö. bash$ perl -x bashandperl.sh ½ºÅ©¸³Æ®ÀÇ ÆÞ ÂÊ¿¡¼ º¸³»´Â ÃàÇÏ ¸Þ¼¼Áö. |