shell如何根据正则取字符串

题目描述

str = 'master 7ecbf3f [origin/master: ahead 8, behind 1] local'

1.如何取到[ ]之间的字符串origin/master: ahead 8, behind 1
2.如何判断1中取到的字符串包含behind或者diverged?
shell太销魂了,求解!


小唯快跑啊
浏览 1336回答 2
2回答

慕侠2389804

1.如何取到[ ]之间的字符串origin/master: ahead 8, behind 1?str='master&nbsp;7ecbf3f&nbsp;[origin/master:&nbsp;ahead&nbsp;8,&nbsp;behind&nbsp;1]&nbsp;local'#方法一grep&nbsp;-Po&nbsp;'\[\K[^]]+'&nbsp;<<<$str#方法二sed&nbsp;'s/[^[]\+\[//;s/].*//'&nbsp;<<<$str#方法三awk&nbsp;-F'[][]'&nbsp;'{print&nbsp;$2}'&nbsp;<<<$str2.如何判断1中取到的字符串包含behind或者diverged?[[&nbsp;$str&nbsp;=~&nbsp;"behind"&nbsp;||&nbsp;$str&nbsp;=~&nbsp;"diverged"&nbsp;]]&nbsp;&&&nbsp;echo&nbsp;"匹配"&nbsp;||&nbsp;echo&nbsp;"不匹配"
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Html5