原帖:
处理前:
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
处理规则:
第一种结果,提取每对中括号里的内容;第二种结果,提取嵌套的每对中括号里的内容。
第一种:
-
awk -F '' '{while(/\[/){for(i=0;++i<=NF;){if(k){if($i~/\]/)print s;s=s""$i}if($i~/\[/)k=1}s=k="";sub(/\[/,"")}}'
第二种:
-
sed -nr '/\[.*\[/!b;s/(.*)\[([^][]*)\](.*)/\2\n\1\3/;P;D'
-
awk -F '' '{for(i=0;++i<=NF;){if($i~/\[/){s="";continue}if($i~/\]/&&s!~/\]/)print s;s=s""$i}}'
-
grep -oP '(?<=\[)[^][]*(?=\])'
-
perl -lne '1 while(/\[([^][]*)\](?{print $1})/g)'
阅读(1872) | 评论(0) | 转发(0) |