#!/bin/sh
#使用文本处理命令抽取/ORACLE/RDBMS/admin目录下脚本的注释信息
set echo on
echo "clean env..."
mkdir temp
rm -f result.txt
#获取/ORACLE/RDBMS/admin目录下的文件列表:
echo "get sql file list ..."
ls -l $ORACLE_HOME/rdbms/admin |awk '{print $NF}'|grep .sql$ >sql.list
#替换所有文件中所有^M字符:
echo "replace ^M char ..."
while read line
do
sed 's/^M//g' $ORACLE_HOME/rdbms/admin/$line >./temp/$line
done
#输出需要打印的文件及始末行行号到info.txt文件中:
echo "output file ,start and end line number to print ..."
for i in `cat sql.list`
do
awk -v var=$i 'BEGIN{i=1&&j=1}
$0=="rem NAME"
||$0=="-- NAME"
||$0=="Rem NAME"
||$0=="Rem NAME"
||$0=="Rem NAME"
||$0=="REM NAME"
||$0=="rem NAME"
||$0=="rem NAME"
||$0=="REM NAME"
{i=NR}
$0=="rem MODIFIED"
||$0=="-- MODIFIED MM/DD/YY"
||$0=="Rem MODIFIED (MM/DD/YY)"
||$0=="Rem MODIFIED (MM/DD/YY)"
||$0=="Rem MODIFIED"
||$0=="REM MODIFIED (MM/DD/YY)"
||$0=="rem MODIFIED (MM/DD/YY)"
||$0=="rem MODIFIED (MM/DD/YY)"
||$0=="REM MODIFIED (MM/DD/YY)"
||$0=="Rem MODIFIED"
||$0=="Rem MODIFIED (MM/DD/YY)"
{j=NR}END{print var,i,j - 1}' ./temp/$i>>info.txt;
done
##cat info.txt |grep "1 1" |wc -l
#输出所有文件的注释信息到result.txt文件中:
echo "print descripiton info to result.txt..."
while read line
do
a=`echo $line|cut -d" " -f1`
echo $a
b=`echo $line|cut -d" " -f2`
echo $b
c=`echo $line|cut -d" " -f3`
echo $c
sed -n "${b},${c}p" $a>>result.txt
echo "------------------------">>result.txt
doneecho "clean temp file ..."
rm -f ./info.txt
rm -rf ./temp
rm -f sql.list[@more@]