Chinaunix

标题: 各位大侠,小弟有一个问题无法解决。向大家请教 [打印本页]

作者: chenjinnan    时间: 2004-07-28 14:39
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
各位大侠,小弟有一个问题无法解决。向大家请教
我dbschema -d testdatabase 11.sql
现在我想利用一个shell把11.sql里的create index的sql单独拉出来,但是因为
create index 这个语句往往不是一行就结束,总是有几个字段在下一行。
导致我用sed -n -e '/create index/,/);/p' 11.sql 总是不能把所有的索引显示出来。请大家不吝指教.
作者: idhly    时间: 2004-07-28 14:43
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
贴一段无法正确抽取的文本内容上来看看...
作者: chenjinnan    时间: 2004-07-28 14:52
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
create index jinsuan_5 on jinsuan_d (p_no,la_no,
    indem_no,vehno);
create index jinsuan_d_i on jinsuan_d (p_no,vehno);

{ TABLE t_goodclient row size = 151 number of columns = 11 index size = 0
              }
create table t_goodclient
  (
    flag char(1),
    chxmc char(60),
    new_price decimal(8,0),
    gmrq date,
    maker char(6),
    act_pre decimal(16,2),
    driverpassage smallint,
    driverage smallint,
    driversex char(1),
    insured varchar(40),
    tele_no char(20)
  );
create index d_i_edrindem1 on t_edrindem (p_no,
    fgs);
请大侠赐教
作者: chenjinnan    时间: 2004-07-28 15:23
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
请大家多多指教啊,小弟急于知道答案
作者: xiaoyafeng    时间: 2004-07-28 15:56
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
用/.*/{
        N
        /create\ index.*\n.*;/P
        }
试试。
不过偶觉得用awk或perl更好。
作者: chenjinnan    时间: 2004-07-28 16:06
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
楼上的,能告诉我具体点怎么做吗?我不知道怎么使用你刚才贴的命令.
作者: xiaoyafeng    时间: 2004-07-28 16:08
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
sed 脚本。
作者: chenjinnan    时间: 2004-07-28 16:16
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
/.*/{
N
/create\ index.*\n.*;/P
} 11.sql
我直接执行了,不行,报错
作者: idhly    时间: 2004-07-28 16:21
标题: 各位大侠,小弟有一个问题无法解决。向大家请教

  1. #!/bin/awk -f

  2. BEGIN{i=1}

  3. {
  4.   if($0~/^create index/)
  5.     {
  6.       i=0;
  7.     }

  8.   if(i==0){print $0;}

  9.   if($0~/\)\;/){i=1;}
  10. }

  11. END{}
复制代码

存为test.awk, 运行: test.awk test.txt
作者: chenjinnan    时间: 2004-07-28 16:42
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
test.awk: BEGIN{i=1}:  not found
test.awk[2]: syntax error at line 7 : `{print' unexpected
楼上的,我用了,保以上的错
作者: chenjinnan    时间: 2004-07-28 16:49
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
还有,楼上的的,偶是菜鸟,可以给我解释一下~的意思,是波浪线吧。代表什么什么意思呢?小弟是刚接触shell
作者: idhly    时间: 2004-07-28 16:49
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
原帖由 "chenjinnan" 发表:
ax error at line 7 : `{print' unexpected
楼上的,我用了,保以上的错


怎么象是awk没有解析啊?

awk --version查一下, 还有有没有运行权限, /bin里面有没有awk?
作者: wu_jerry    时间: 2004-07-28 16:50
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
awk 'BEGIN{FS="\n"; RS=";"}{x = 1; while ($1 ~ /^create/&& x<NF) {x++; printf"%s%s;\n",$1,$2}}'  tmp.txt
但是只能显示一行:(
作者: chenjinnan    时间: 2004-07-28 17:00
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
idhly老兄,我的bin下面有awk的,我一直在用的
作者: idhly    时间: 2004-07-28 17:03
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
[quote]原帖由 "chenjinnan"]还有,楼上的的,偶是菜鸟,可以给我解释一下~的意思,是波浪线吧。代表什么什么意思呢?小弟是刚接触shell[/quote 发表:


楼上是你自己哈.........


查awk的书...
作者: idhly    时间: 2004-07-28 17:05
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
BEGIN{i=1}改成BEGIN{i=1;}试试, 不会语法要求这么严格吧? 我这些都是最基本的awk指令和结构啊...
作者: wu_jerry    时间: 2004-07-28 17:09
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
Sorry,我的脚本好像还是有问题的.....
作者: chenjinnan    时间: 2004-07-28 17:12
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
各位老大,谁来救救我啊
作者: idhly    时间: 2004-07-28 17:21
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
我的机器上运行是对的...不行你把BEGIN{i=0}那行删掉再试试
作者: idhly    时间: 2004-07-28 17:26
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
我知道了, 你的test.awk第一行肯定不是"#!/bin/awk -f", 系统根本没有用awk来解释...
作者: wu_jerry    时间: 2004-07-28 18:32
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
cat tmp.txt |tr '\n' ' '|awk '{FS=";";RS=""}{x = 0 ;while (x<NF) {x++; printf "%s;\n",$x}}'|grep "create index"

排列不是很好看。不过可以用
作者: wu_jerry    时间: 2004-07-28 18:37
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
cat tmp.txt |tr '\n' ''|awk '{FS=";";RS=""}{x = 0 ;while (x<NF) {x++; printf "%s;\n",$x}}'|grep "create index"

那个tr里面的空格不要就可以了
作者: chenjinnan    时间: 2004-07-29 09:04
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
wu_jerry 兄,不行,如果index里的有2个字段在下一行,就无法显示
作者: wu_jerry    时间: 2004-07-29 09:06
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
是吗?我是按照分号来取的呀。你上面那个例子用我的方法是可以的。你再贴一个文本我看看?
作者: chenjinnan    时间: 2004-07-29 09:39
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
wu_jerry 兄请看
create index i_t_zxfd1 on t_zxfd (p_no,edrno,vehno,;
这个shell少了一个字段,而且自动加上了;
而且显示出来的明显偏少
作者: chenjinnan    时间: 2004-07-29 09:40
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
idhly兄,我加了#!/bin/awk -f
test.awk: syntax error at line 8: `{print' unexpected
问题好像是出在那个print上
作者: idhly    时间: 2004-07-29 09:45
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
原帖由 "chenjinnan" 发表:
idhly兄,我加了#!/bin/awk -f
test.awk: syntax error at line 8: `{print' unexpected
问题好像是出在那个print上


那把"print $0;"改为"printf("%s\n",$0);"再试试...


  1. #!/bin/awk -f

  2. BEGIN{i=1;}

  3. # Main Course
  4. {
  5.   if($0~/^create index/)
  6.     {
  7.       i=0;
  8.     }

  9.   if(i==0)
  10.     {
  11.       # printf("%s\n",$0);
  12.       print $0;
  13.     }

  14.   if($0~/\)\;/){i=1;}
  15. }

  16. END{}
复制代码

作者: wu_jerry    时间: 2004-07-29 09:53
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
你把tr '\n' ''改成tr '\n' ' '就可以了
输出结果:
create index jinsuan_5 on jinsuan_d (p_no,la_no, indem_no,vehno);
  create index jinsuan_d_i on jinsuan_d (p_no,vehno);
  create index d_i_edrindem1 on t_edrindem (p_no,  fgs);
作者: chenjinnan    时间: 2004-07-29 10:23
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
wu_jerry兄,报以下错
awk: input record `grant dba to  grant ...' too long
source line 1 of program << {FS=";";RS=""}{x=0;w ... >>
作者: wu_jerry    时间: 2004-07-29 10:23
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
cat tmp.txt |tr '\n' ' '|awk '{FS=";";RS=""}{x = 0 ;while (x<NF) {x++; printf "%s;\n",$x}}'|grep "create index"|awk '{x=0 ;while(x<NF){x++; p
rintf"%s ",$x}{printf"\n"}}'
这样可以把最开始的空格去掉
作者: chenjinnan    时间: 2004-07-29 10:28
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
idhly兄,我照你以上脚本写了
test.awk: syntax error at line 3: `}' unexpected
作者: idhly    时间: 2004-07-29 10:31
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
原帖由 "chenjinnan" 发表:
idhly兄,我照你以上脚本写了
test.awk: syntax error at line 3: `}' unexpected


  1. #!/bin/awk -f

  2. {
  3.   if($0~/^create index/)
  4.     {
  5.       i=0;
  6.     }

  7.   if(i==0)
  8.     {
  9.       printf("%s\n",$0);
  10.     }

  11.   if($0~/\)\;/){i=1;}
  12. }
复制代码

作者: idhly    时间: 2004-07-29 10:33
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
你到底是什么系统? AIX? HP-UX? Solaris? Linux? 我这里都能通过? 把你的awk --version结果贴出来看看...
作者: chenjinnan    时间: 2004-07-29 10:33
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
wu_jerry兄还是
awk: input record `grant dba to  grant ...' too long
source line 1 of program << {FS=";";RS=""}{x=0;w ... >>
作者: chenjinnan    时间: 2004-07-29 10:35
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
awk --verision
awk: ERROR: Illegal option -- -
usage: awk [-F field-sep] [-v varname=value]...
           { { -f sourcefile | -e 'program' }... | -We sourcefile | 'program' }
           { varname=value | file }...
我好像不行,我的系统是sco的
作者: idhly    时间: 2004-07-29 10:46
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
我手边没有SCO, 你可以试试我给你的最后一个代码段...
作者: wu_jerry    时间: 2004-07-29 10:48
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
我不清楚了。我这里都是调试好的
作者: chenjinnan    时间: 2004-07-29 10:54
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
搞不定啊,FT
作者: idhly    时间: 2004-07-29 11:00
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
[quote]原帖由 "chenjinnan"]搞不定啊,FT[/quote 发表:


别着急, 我再用标准shell编一个试试...
作者: idhly    时间: 2004-07-29 11:18
标题: 各位大侠,小弟有一个问题无法解决。向大家请教

  1. #!/bin/sh

  2. i=1

  3. cat test.txt | while read line
  4. do
  5.   if [ `echo $line | grep -c ^create.index` -gt 0 ]
  6.   then
  7.   i=0
  8.   fi

  9.   if [ $i -eq 0 ]
  10.   then
  11.   echo $line
  12.   fi

  13.   if [ `echo $line | grep -c \)\;$` -gt 0 ]
  14.   then
  15.   i=1
  16.   fi
  17. done
复制代码


如果这个还不能运行我就没辄了...
作者: tangl    时间: 2004-07-29 11:35
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
匹配,如果~之前的与~之后的匹配就向下执行
作者: idhly    时间: 2004-07-29 15:35
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
楼主到底好不好用, 别忘了给个话... :em11:
作者: chenjinnan    时间: 2004-07-29 16:45
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
test.awk[3]: syntax error at line 7 : `then' unexpected
idhly兄,报这个错
作者: idhly    时间: 2004-07-29 17:22
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
原帖由 "chenjinnan" 发表:
ax error at line 7 : `then' unexpected
idhly兄,报这个错


晕, 最后给你新的代码存为test.sh运行...
作者: chenjinnan    时间: 2004-07-29 17:41
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
楼上的,你的test.sh脚本在哪里啊?
作者: idhly    时间: 2004-07-29 17:50
标题: 各位大侠,小弟有一个问题无法解决。向大家请教

  1. #!/bin/sh

  2. i=1

  3. cat test.txt | while read line
  4. do
  5.   if [ `echo $line | grep -c ^create.index` -gt 0 ]
  6.   then
  7.   i=0
  8.   fi

  9.   if [ $i -eq 0 ]
  10.   then
  11.   echo $line
  12.   fi

  13.   if [ `echo $line | grep -c \)\;$` -gt 0 ]
  14.   then
  15.   i=1
  16.   fi
  17. done
复制代码


感觉好累啊
作者: chenjinnan    时间: 2004-07-29 18:36
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
不管行不行,还是要多谢各位大侠帮助
作者: idhly    时间: 2004-07-29 20:02
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
不用客气, 干技术人的通病, 搞不定睡觉都不安心哈...

不管通过没通过, 都说一下吧...
作者: chenjinnan    时间: 2004-07-30 08:50
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
不好意思了 idhly兄
test.sh: create: not found
test.sh: test: argument expected
cat: output error (0 characters written): grep: no pattern given
grep [-E|-F] [-c|-l|-q] [-bhinsvx] [-e pattern_list] [-f pattern_file] [pattern]
Broken pipe (error 32)
作者: idhly    时间: 2004-07-30 09:35
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
原帖由 "chenjinnan" 发表:

Broken pipe (error 32)


谁借我把榔头, 我到你那儿把这台破SCO砸了得了, 什么年代的OS啊...最基本的bash命令都解释不了...
作者: chenjinnan    时间: 2004-07-30 11:22
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
我们是ksh啊
作者: sega6666    时间: 2004-07-30 15:55
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
呵呵!路过,受益非浅!
作者: idhly    时间: 2004-07-30 16:19
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
#!/bin/sh 就是要bash来解释的...

这位兄弟的问题偶解决不了了, 闪...
作者: zhangjoto    时间: 2004-07-31 12:35
标题: 各位大侠,小弟有一个问题无法解决。向大家请教
第一页的awk脚本用awk -f test.awk 11.sql执行。
最后那个sh中的test.txt也改成11.sql

这个问题早就应该OK了。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2