Linux,shell脚本里一个关于正则表达式的问题

2025-03-26 18:33:01
推荐回答(2个)
回答1:

因为正则匹配的时候就是这样的。
看这个:
s/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/

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

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

t start --> 跳转到start继续执行,这就是sed中使用循环语句的典型方法。

回答2:

这个应该是从右边依次每隔三个一路向左处理过来的.

.* 是贪婪,不太了解sed 正则