网页教学网
 当前位置: 网页教学网 >> 建站指南 >> 主机域名邮局 >> 阅读:Linux中使用Shell脚本去掉源码注释的方法
[ HTML ] [ FW ] [ DW ] [ FP ] [ JS ] [ XML ] [ CSS ] [ 图象 ] [ FLASH ] [ .NET ] [ ASP ] [ JSP ] [ PHP ] [ 数据 ] [ 系统 ] [ 安全 ] [ 素材 ] [ 建站 ] [ 主机 ] [ 入门 ] [ 技巧 ]

Linux中使用Shell脚本去掉源码注释的方法

http://www.webjx.com  更新日期:2007-07-27 08:34  出处:网页教学网  作者: 收藏本文

该文件用来终极删除注释,操作系统限linux

#!/bin/bash
###the script use to delete comment

if [ -z "$1" ];then                  #检测是否输入了源文件
     echo "ipput the source file"
     exit 1
fi

postfix=`echo $1 |cut -f 2 -d '.'`   #取文件的后缀,以便根据不同的文件进行不同的处理

if [ -n "$2" ];then                  #存放处理源文件产生的信息的文件
     target_file=$2                  #如果给出了就直接调用
     touch ${target_file}
else
prefix=`echo $1|cut -f 1 -d '.' ` #如果没有给出的话则生成一个和源文件名字一样,但后缀为temp的文件
     target_file=${prefix}.temp
     touch ${target_file}
fi

case "postfix" in
          sh )
              echo "it is shell script !"
              sed 's/[[:space:]]#.*//g' $1 |sed '/^#/d'|\
              sed '/^[[:space:]]*$/d' | sed '/^$/d' >${target_file}
              echo "the source file is $1,target file is ${target_file}"
              ;;
       c|java)
              echo "c  or java program"
              sed 's/\/\*.*\*\///g' $1|sed '/\/\*/,/.*\*\//d' |\
              sed 's/\/\/.*//g' |\
              sed '/^[[:space:]]*$/d' |sed '/^$/d' >${target_file}
              echo "the source file is $1,target file is ${target_file}"
              ;;
        *)
              echo "unknown file type !"
              rm -f ${target_file}
              ;;
esac


//-------------------------

#!/bin/sh -f

function del_comment_file()
{
#C++模式注释的删除。
#Delete the line begins with //
#首先删除//在行首的行
sed -i '/^[ \t]*\/\//d' $file

#Delete the line ends with //
#注意已经除去了 //在行首的情况,下面匹配除去URL的//部分,因为代码中有一部分中有
#URL,形如fun("ftp://")
sed -i 's/\/\/[^"]*//' $file

#删除以C语言中注释只在一行的行
sed -i 's/\/\*.*\*\///' $file

#Delete the lines between /* and */
#删除C语言中注释跨行的情况
sed -i '/^[ \t]*\/\*/,/.*\*\//d' $file
}

function del_comment()
{
#$Dir=`pwd`

for file in `ls`;do
case $file in
*.c )
del_comment_file
;;
*.cpp )
del_comment_file
;;
*.h )
del_comment_file
;;
* )
if [ -d $file ];then
cd $file
del_comment
cd ..
fi
;;
esac
done
}

Dir=$1

if [ ! -e $Dir ];then
echo "The Directory isn't exist."
exit
fi

cd $Dir

del_comment

关键词:服务器,linux
推荐给好友】【关闭
最新五条评论
查看全部评论
评论总数 0
您的评论
用户名: 新注册) 密 码: 匿名:
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
站内搜索
相关文章
推荐文章