linux shell sed表达式分析
发布网友
发布时间:2022-04-23 03:51
我来回答
共2个回答
热心网友
时间:2023-11-04 22:40
正则匹配中,点号.表示任意一个字符,*表示重复前面一个字符(这里就是点号.)0次或多次。
\(.*\)a表示要以一个a字符结尾,而默认情况下*具有贪婪特性,会匹配符合要求的最大数目的字符。
因此
.*
就匹配到了最后一个a前面的所有字符。
\(
\)
这种结构在sed的替换命令里是组的概念,在后面替换时可以用\n来引用。
第一个组用\1,第二个组用\2,依此类推。
这个命令的作用就是:将字符串中最后一个a字符替换为b,其余不变。
热心网友
时间:2023-11-04 22:41
-e
允许多台编辑
s
是替换
,
因为里边用了/
所以它来当分隔符
sed
-e
"s,\(.*\)://[^/:]*\(:\?[0-9]*\)/\(.*\),\1${transport_suffix}://${target_node}\2/\3,"
\(.*\)
这是第一个域
也就是\1
://[^/:]*
不知道你文本是什么样的,这是一个匹配的正则,表示匹配中不包含
/:
://应该属于文本的内容
\(:\?[0-9]*\)
这是\2
第二个域里边写的匹配的正则
应该是:?一串数字
/
这个也应该是按照你们那个文本里需要的匹配写的
\(.*\)
\3
第三个域
\1${transport_suffix}://${target_node}\2/\3,"
在\1
(第一个域)
和\2个域中间加了两个${transport_suffix}://${target_node}变量
不知道我解释的清楚不。