shell 正则匹配一条字符串并且获取该字符串中所有匹配到的字符
比如说$a="这个一个测试1234.html,还有一个连接2333.html"要获取到1234.html和2333.html...
比如说 $a="这个一个测试1234.html,还有一个连接2333.html"
要获取到1234.html和2333.html 展开
要获取到1234.html和2333.html 展开
3个回答
展开全部
$ echo $a | awk -v RS=".html" '{if(length($0)>1){gsub("[^0-9]+","");print $0".html"}}'
1234.html
2333.html
不清楚正则匹配的条件(关键字)是什么,如有更详细的说明就更好了。
暂且只匹配了html,并且假设html的名称都是数字,而其他描述部分都是非数字。
更多追问追答
追问
匹配到 repdetail_2121417.html类型 就是数字不一样,如repdetail_2121418.html repdetail_2131417.html
追答
a="这是一个测试repdetail_2121413.html,还有一个连接repdetail_2121418.html,还有一个repdetail_2131417.html"
echo $a | awk -F"(repdetail)|(html)" '/html/{for(i=2;i<NF;i+=2) print "repdetail"$i"html"}'
以 repdetail 和 html 为字段分隔符,打印偶数字段并补全文件名。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐于2018-03-10
展开全部
显示内容:
$ echo "XCBNHTES1234.html,UHNGWWDD3333.html"
XCBNHTES1234.html,UHNGWWDD3333.html
选出文件名字:
$ echo "XCBNHTES1234.html,UHNGWWDD3333.html"| sed -r 's/[^1-9]*([1-9]+\.html)/\1/g'
1234.html3333.html
文件名之间加空格:
$ echo "XCBNHTES1234.html,UHNGWWDD3333.html"| sed -r 's/[^1-9]*([1-9]+\.html)/\1/g' | sed 's/html/html /g'
1234.html 3333.html
不知道你的详细需求,不知道还有什么特殊情况,仅供参考,谢谢!
$ echo "XCBNHTES1234.html,UHNGWWDD3333.html"
XCBNHTES1234.html,UHNGWWDD3333.html
选出文件名字:
$ echo "XCBNHTES1234.html,UHNGWWDD3333.html"| sed -r 's/[^1-9]*([1-9]+\.html)/\1/g'
1234.html3333.html
文件名之间加空格:
$ echo "XCBNHTES1234.html,UHNGWWDD3333.html"| sed -r 's/[^1-9]*([1-9]+\.html)/\1/g' | sed 's/html/html /g'
1234.html 3333.html
不知道你的详细需求,不知道还有什么特殊情况,仅供参考,谢谢!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询