Chinaunix

标题: 请教如何按以下方式拆离字符串? [打印本页]

作者: allex    时间: 2003-04-28 15:39
标题: 请教如何按以下方式拆离字符串?
1。有许多文件
2。每个文件中的字符串类似以下形式:
    1)
       select * from admin.tab1
    2)
       select *
       from admin.tab1,admin.tab2
    3)
       select col1,sum(col2)
       from admin.tab1,admin.tab2 group by col1
3。我想从中取得字符串"admin"后的第一个单词,即表名。
4。这个单词后有可能是",",或者空格,或者回车

大伙帮俺想想。
谢了
作者: muzx    时间: 2003-04-28 16:08
标题: 请教如何按以下方式拆离字符串?
试试行不!
  1. sed -n  's:.*admin\.\([a-z]\{1,\}[0-9]\{1,\}\)[ ,].*:\1:p' file
复制代码

作者: allex    时间: 2003-04-28 16:18
标题: 请教如何按以下方式拆离字符串?
如果是第三种情况,好像只能得到tab2哦
作者: muzx    时间: 2003-04-28 16:20
标题: 请教如何按以下方式拆离字符串?
噢:包涵两个匹配的用下面表达式
  1. sed -n  's:.*admin.\([a-z]\{1,\}[0-9]\{1,\}\)[ ,].*admin.\([a-z]\{1,\}[0-9]\{1,\}\)[ ].*:\1  \2:p' file
复制代码

作者: allex    时间: 2003-04-28 16:36
标题: 请教如何按以下方式拆离字符串?
谢了,这将大大减轻我的工作量^_^
作者: allex    时间: 2003-04-28 16:53
标题: 请教如何按以下方式拆离字符串?
哟,还有个问题哟。
我该如何判断字符串是属于那种形式的,而采用不同的方法?
这个方法好像不能通用的哦。
用代码
sed -n  's:.*admin.\([a-z]\{1,\}[0-9]\{1,\}\)[ ,].*admin.\([a-z]\{1,\}[0-9]\{1,\}\)[ ].*:\1  \2:p' file
拆离第一形式的字符串仍然输出:
tab1  tab2
作者: muzx    时间: 2003-04-28 17:21
标题: 请教如何按以下方式拆离字符串?
先执行第一个,拆离的是第一种形式,再执行第二个拆离的是第二种形式的。
作者: allex    时间: 2003-04-28 17:30
标题: 请教如何按以下方式拆离字符串?
你的意思是不是:
不管什么字符串,都用两种方法拆离一遍?
作者: muzx    时间: 2003-04-28 17:36
标题: 请教如何按以下方式拆离字符串?
暂时只好这样,看哪位大虾还有别的好办法没有。
作者: muzx    时间: 2003-04-28 17:44
标题: 请教如何按以下方式拆离字符串?
有啦!请用下面代码试试:
  1. awk 'BEGIN{FS="adm"}{for(i=1;i<=NF;i++)printf"%s\n",$i}' file|sed -n  's:in.\([a-z]\{1,\}[0-9]\{1,\}\)[ ,].*:\1:p'
复制代码

作者: woodie    时间: 2003-04-28 18:52
标题: 请教如何按以下方式拆离字符串?
只用awk的话,可以这样:
  1. awk  'BEGIN{FS="admin."}{for (i=2;i<=NF;i++) {sub(/[ ,].*/,"" ,$i);print $i}}'
复制代码

作者: allex    时间: 2003-04-28 19:59
标题: 请教如何按以下方式拆离字符串?
太棒了!

3x
作者: muzx    时间: 2003-04-28 21:13
标题: 请教如何按以下方式拆离字符串?
原帖由 "woodie" 发表:

很好!!!
作者: firebody    时间: 2003-04-28 23:54
标题: 请教如何按以下方式拆离字符串?
muzx ,i love you so much!
作者: woodie    时间: 2003-04-29 08:56
标题: 请教如何按以下方式拆离字符串?
用sed可以这样:
  1. sed -e "s/admin.\([^, ]*\)/<\1 >/g; s/[^<>]*<\|>[^<>]*//g"
复制代码

作者: deathcult    时间: 2003-04-29 12:13
标题: 请教如何按以下方式拆离字符串?
perl
#!/usr/bin/perl
foreach(`more a`)
{
        print "$1\n" while(/admin.([^, \n]*)/g);
}
作者: woodie    时间: 2003-04-30 10:01
标题: 请教如何按以下方式拆离字符串?
我没看懂deathcult的perll程序, 于是干脆自己写了一个:

  1. perl -e '@lines=<>; grep s/,| /\n/g, @lines; print map /admin.(.*\n)/g, @lines'
复制代码





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