Linux:sed模式匹配,这段是如何匹配的呢?

echo$1?|?sed?'s/\(.*\)\(.\)$/\2/'网上讲解:$1表示传进来的一个数字,这里判断该数字是奇数还是偶数,这里的重点主要是sed命令中正则表达式... echo $1?|?sed?'s/\(.*\)\(.\)$/\2/'

网上讲解:
$1表示传进来的一个数字,这里判断该数字是奇数还是偶数,这里的重点主要是sed命令中正则表达式的写法,它将原有的数字拆分为两个模式(用圆括号拆分),一个前面的所有高位数字,另一个是最后一位低位数字,之后再用替换符的方式(\2),将原有数字替换为只有最后一位的数字,最后将结果返回为last_digit变量。?

没看懂这个讲解
\(.*\)表示0~多个任意字符
\(.\)表示一个任意字符
这两个必须都满足才可以吗?如果我只传进来一个8,也是奇数,但是8没办法被分成两部分啊,

而且后面的\2是什么意思呢?2前面加了个\是什么情况?
展开
 我来答
wanghan519
2013-10-28 · TA获得超过7820个赞
知道小有建树答主
回答量:1285
采纳率:60%
帮助的人:526万
展开全部
\(\)括起来的是捕获组,你可以在后面的替换中用\1 \2 之类的来调用
.表示任意一个字符
*表示*前面出现的那个字符重复0或任意次
你写8,第一个捕获组捕获0个字符,第二个捕获组捕获一个字符
追问
大哥
这个东西都是这个规定的吗?
为什么不是第一个捕获组捕获1个字符,第二个捕获组捕获0个字符呢?
追答
用\(\)括起来的是捕获组

第一个捕获组.*表示任何一个字符重复0次或任意次
第二个捕获组.表示任何一个,且必须有一个任意字符
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式