免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2157 | 回复: 7
打印 上一主题 下一主题

请教一个正则问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-09 21:05 |只看该作者 |倒序浏览
有一个文件里面有如下内容

  1. [aaa][bbb]ccccccccc
  2. [ddd]eeeeeeeeee
  3. ........
  4. [fff][eee]ggggggg
复制代码

请问怎样取出每行中'[]'中的内容呢?
谢谢!

论坛徽章:
0
2 [报告]
发表于 2008-05-09 21:52 |只看该作者
sed -e 's/[^[]*\[\(.*\)\].*/\1/' -e 's/\]\[/ /g'  file

论坛徽章:
0
3 [报告]
发表于 2008-05-09 23:03 |只看该作者

回复 #2 dolphinlater 的帖子

能给个简洁的解释吗?谢了!

论坛徽章:
0
4 [报告]
发表于 2008-05-09 23:19 |只看该作者
以    [aaa][bbb]ccccccccc 为例:

第一个 -e 表达式取出 第一个[最后一个] 之间的所有字符,即
aaa][bbb

第二个 -e 表达式将可能存在的 ][ 替换为 空格,即
aaa bbb

论坛徽章:
0
5 [报告]
发表于 2008-05-10 02:58 |只看该作者
如果是
[aaa][bbb]ccccccccc
[ddd]eeeeeeeeee
........
[fff]ssss[eee]ggggggg

这样如何
sed -e 's/\(\[[^]]*\]\)[^[]*/\1 /g' -e 's/\]//g' -e 's/\[//g'   file

论坛徽章:
0
6 [报告]
发表于 2008-05-10 16:13 |只看该作者
  1. grep -oP '(?<=\[).+?(?=\])' file
复制代码

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
7 [报告]
发表于 2008-05-10 17:24 |只看该作者
原帖由 __lxmxn__ 于 2008-5-10 16:13 发表
grep -oP '(?

Regex Master

论坛徽章:
0
8 [报告]
发表于 2008-05-10 20:55 |只看该作者
如果是想将每行的多个[]里面的内容依次输出来([]与[]之间没有约束,可以间隔的很远)可以用perl做。
我的结果是将每行的[]里面的数据显示出来,[]与[]之间用空格隔开,如果某行没有[]就显示空行.
#!/usr/local/bin/perl -w
use strict;
open OUT ,"da";
while(<OUT>)
{if(/(\[.*\]+)/)
   {my $tmp=$1;
   if($tmp=~s/[\[|\]]/ /g)
     {print $tmp."\n"};
   }
  else
   {print"\n"};
}

[ 本帖最后由 nm_0011 于 2008-5-10 22:59 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP