分页: 1 / 1
怎么提取()中的部分[已解决]
发表于 : 2009-10-25 17:40
由 ghostry
我从QQ 里道出的好友列表,用grep整理了下,
下子文件内容如下
昵称(235469855)
昵称2哈哈<
[email protected]>
水木阿 (658656)
都是这样的,但是我只需要()和《》中的部分。我现把《》都替换成了(),但是每行长度不一,改怎么提取()中的部分呢PS
PS:
我的最终目的是把所所有的行都变成邮件地址。是号码的就加上@qq.com
Re: 怎么提取()中的部分
发表于 : 2009-10-25 17:43
由 O_O_BOT
sed 's/(\(.*\))/\
[email protected]/g'
Re: 怎么提取()中的部分
发表于 : 2009-10-26 10:41
由 maozhx
sed 's/.*(\([0-9]*\))/\
[email protected]/g' filename | sed 's/.*(\(.*\))/\1/g'
Re: 怎么提取()中的部分
发表于 : 2009-10-26 12:04
由 xwyxn
能详细解释一下.*(\(.*\))/吗?谢谢!
Re: 怎么提取()中的部分
发表于 : 2009-10-26 12:28
由 maozhx
最前面的 “.*” 匹配可能的昵称和空格
里面的括号是捕获值后面给 “\1”
外面的括号是为了匹配数字帐号外面的括号
Re: 怎么提取()中的部分
发表于 : 2009-10-26 12:30
由 O_O_BOT
.* 有没有看你是否要 昵称
Re: 怎么提取()中的部分
发表于 : 2009-10-26 12:49
由 maozhx
O_O_BOT 写了:.* 有没有看你是否要 昵称
“*” 匹配任意多次或者不出现
我只是针对上面给出的格式
Re: 怎么提取()中的部分
发表于 : 2009-10-27 6:24
由 aerofox
再来一个:
代码: 全选
awk -F "[()]" '{print $2 "@qq.com"}'
Re: 怎么提取()中的部分
发表于 : 2009-10-27 8:55
由 eexpress
bash的转义罗嗦的。来perl吧。
Re: 怎么提取()中的部分
发表于 : 2010-01-26 21:42
由 tusooa
代码: 全选
#!/usr/bin/env perl
use 5.010;
chomp($_=<STDIN>);
say "$1@qq.com" if /\((.+)\)/;
如果@是@,要转义