早教吧 育儿知识 作业答案 考试题库 百科 知识分享

Linux,shell脚本里一个关于正则表达式的问题[root@node01/]#echo"1234567890"|sed'{>:start>s/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/>tstart>}'1,234,567,890求问:为什么1234567890数据流为什么第一次匹配只截断一个数据,

题目详情
Linux,shell脚本里一个关于正则表达式的问题
[root@node01 /]# echo "1234567890" | sed '{
>:start
>s/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/
>t start
>}'
1,234,567,890
求问:为什么1234567890数据流为什么第一次匹配只截断一个数据,而后面的都是每三个截断一次?
▼优质解答
答案和解析
因为正则匹配的时候就是这样的.
看这个:
s/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/

\(.*[0-9]\) --> 这是一个组,后面用\1来原封不动地引用
\([0-9]\{3\}\) --> 这又是一个组,后面用\2来原封不动地引用

第一个组匹配以一位数字结尾的任意字符串,第二个组匹配连续的3个数字.
.*是贪婪的,所以,最先匹配得到的是 1234567,890

t start --> 跳转到start继续执行,这就是sed中使用循环语句的典型方法.
看了 Linux,shell脚本里...的网友还看了以下:

盗贼瓜分一批赃物,若每人分4匹,则布匹剩20匹,若每人分8匹,则有一人得到但少几匹,盗贼,布匹各多  2020-06-05 …

树林里一伙盗贼正在瓜分一批作为赃物的布匹,如果每人分6匹,就会多出5匹;如果每人分7匹,则会少8匹  2020-06-15 …

一天夜里,一个在森林散步的人听见树林里一伙盗贼在瓜分一批布匹.只听见他们说:“如果没人分4匹,则剩  2020-06-15 …

1.一批盗贼准备瓜分一批赃物布匹,若没人分4匹,则布匹剩20匹;若没人分8匹,则有一个能得到但少几  2020-06-15 …

一群衙役商义怎样分配得赏的布匹,若每人分6匹,多出5匹,若每人分7匹,则有剩余,但不够每人分8匹,  2020-06-15 …

一天夜里,一个人在森林散步的人听见树林里一伙盗贼按在瓜分一批作为赃物的布匹,只听见他们说:如果没人  2020-06-15 …

一天夜里,一个在树林散步的人听见树林里一伙盗贼在瓜分一批赃物的布匹,只听见他们说:“如果每人分4匹  2020-07-12 …

一天夜里,吉姆在森林里散步时,听见树林里的一伙盗贼在瓜分一批作为赃物的布匹,只听见他们说:“如果每人  2020-11-08 …

一天夜里,一个在森林里散步的人听见树林里一伙盗贼在瓜分一批作为赃物的布匹,只听见他们说:“如果每人分  2020-11-11 …

一天夜里,一个人听见一伙盗贼在瓜分一批布匹,只听见.“如果每人分4匹,则剩20匹如果每人分8匹,则有  2020-12-26 …