Chinaunix首页 | 论坛 | 博客
  • 博客访问: 254250
  • 博文数量: 78
  • 博客积分: 1465
  • 博客等级: 上尉
  • 技术积分: 972
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-28 13:46
文章分类

全部博文(78)

文章存档

2012年(1)

2011年(9)

2010年(68)

我的朋友

分类:

2010-01-11 01:05:32


myawk()
{
awk -F '|' ' BEGIN{ flag = 0; fnum = 0; dataflag = 0; beginflag = 0; endflag = 0;}
{
 
 if( $0 ~/^SQL>/ && beginflag == 0 )
  beginflag = 1;
 if( $0 ~/^SQL> Disconnect/ )
  exit;
 if( beginflag == 0 )
  next;
 if( $0 ~/^ *$/ )
  next;
# if( $0 ~/^SQL>.*SQL>.*SQL>.*SQL>/ )
#  next;
  
 if( dataflag == 1 ) {
  for( i=1; i< fnum+1; i ++ ) {
   datalen[i] = length( $i );
  }
  for( i=1; i< fnum+1; i ++ ) {
   fmt = sprintf( "%%-%d.%ds|", datalen[i], datalen[i] );
   printf( fmt, i );
   if( i == fnum )
    printf( "\n" );
  }
  printf( "---------------------------------------------------------------------\n" );
 }
 if( $0 ~ /|/  && flag == 0 ) {
  if( NF > 5 ) {
   fnum = NF;
   for( i=1; i< fnum+1; i ++ ) {
    namelen[i] = length( $i );
    if( i == fnum )
     printf( "\n" );
   }
   printf( "\n" );
  }
  flag = 1;
 }
 dataflag = 0;
 if( $0 ~/--|-\|/ ) {
  for( i=1; i< fnum+1; i ++ ) {
   fmt = sprintf( "%%-%d.%ds|", namelen[i], namelen[i] );
   printf( fmt, i );
   if( i == fnum )
    printf( "\n" );
  }
  dataflag = 1;
  next;
  next;
 }
 print $0;
}' $1
}
sql_ora()
{
sqlplus <--spo /tmp/sqltmp.spo cre
set feedback 1
set pagesize 30
set linesize 2500
set colsep '|';
set numwidth 12;
set trimout on;
@/tmp/sqltmp.sql
quit
!
}
if [ -f $1 ]
then
 cp $1 /tmp/sqltmp.sql
else
 echo ""
 echo "$1" | sed 's/ *$//' |sed '/[^;]$/s/$/;/' > /tmp/sqltmp.sql
fi
sql_ora >/tmp/sqltmp.out
#cat /tmp/sqltmp.out | sed 's/ / /g; s/  */ /g' |myawk
#cat /tmp/sqltmp.out | sed 's/ / /g' |myawk
cat /tmp/sqltmp.out | sed 's/[  ][  ]*/ /g; /^[ -][ -]*$/d;' |myawk
echo ""
#rm -f /tmp/sqltmp.sql 2>/dev/null
#rm -f /tmp/sqltmp.out 2>/dev/null



阅读(788) | 评论(0) | 转发(0) |
0

上一篇:printf与变量

下一篇:awk结构分析

给主人留下些什么吧!~~