該文件用來終極刪除注釋,操作系統限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 $1cut -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}"
;;
cJava)
echo "c or java program"
sed 's/\/\*.*\*\///g' $1sed '/\/\*/,/.*\*\//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