使用文本处理命令抽取/ORACLE/RDBMS/admin目录下脚本的注释信息(可以使用正则表达式匹配)...

本文介绍了一种Shell脚本方法,用于从Oracle RDBMS admin目录下的SQL脚本中提取注释信息。该脚本通过一系列命令处理,包括文件列表获取、特殊字符替换、注释范围确定及最终结果输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/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
done

echo "clean temp file ..."
rm -f ./info.txt
rm -rf ./temp
rm -f sql.list

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23937368/viewspace-1045063/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23937368/viewspace-1045063/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值