Chinaunix首页 | 论坛 | 博客
  • 博客访问: 259801
  • 博文数量: 54
  • 博客积分: 35
  • 博客等级: 民兵
  • 技术积分: 729
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-09 10:35
文章分类

全部博文(54)

文章存档

2014年(37)

2013年(17)

分类: LINUX

2013-12-03 14:51:48

原帖:

处理前:
sss[1[2]3[xxx]45]sss

处理后:
结果1:
1[2
1[2]3[xxx
1[2]3[xxx]45
2
2]3[xxx
2]3[xxx]45
xxx
xxx]45
结果2:
2
xxx

处理规则:
第一种结果,提取每对中括号里的内容;第二种结果,提取嵌套的每对中括号里的内容。

第一种:

  1. awk -F '' '{while(/\[/){for(i=0;++i<=NF;){if(k){if($i~/\]/)print s;s=s""$i}if($i~/\[/)k=1}s=k="";sub(/\[/,"")}}'

第二种:

  1. sed -nr '/\[.*\[/!b;s/(.*)\[([^][]*)\](.*)/\2\n\1\3/;P;D'

  1. awk -F '' '{for(i=0;++i<=NF;){if($i~/\[/){s="";continue}if($i~/\]/&&s!~/\]/)print s;s=s""$i}}'

  1. grep -oP '(?<=\[)[^][]*(?=\])'

  1. perl -lne '1 while(/\[([^][]*)\](?{print $1})/g)'
阅读(1791) | 评论(0) | 转发(0) |
0

上一篇:邻接矩阵

下一篇:showkey

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