有人可以解释这个 sed 命令吗?
Can someone explain this sed command?
所以正文如下:
1a fost odata
2un balaur
care fura
mere de aur
使用此命令后:
sed 's/\([a-z]*\)\(.*\)\( [a-z]*\)/ ... /' filename
结果是这样的:
... 1a fost
... 2un balaur
care ...
mere ... de
我知道 </code> 是第一个 <code>[a-z]*
子表达式等等,但我就是想不通。还有,第一个子表达式和最后一个子表达式有什么区别一?为什么[a-z]
前面有一个space?
第一个 [a-z]*
匹配行中的第一个字母序列。 *
量词匹配 0 次或多次重复,因此也可以匹配空字符串。
第一行匹配1a
之前的空字符串。在第二行,它匹配 2un
之前的空字符串。在第三行它匹配 care
,在第四行它匹配 mere
。这些比赛将进入捕获组 1。
.*
匹配零个或多个任意字符,因此这将跳过行中间的所有内容。这些匹配进入捕获组 2。
[a-z]*
匹配 space 后跟零个或多个字母。需要 space 才能使 .*
在到达行中的最后一个 space 时停止匹配。这些匹配进入捕获组 3。
替换为捕获组 1 和 2,它们之间有 ...
。这是行首的字母,...
,然后是除最后一个单词之外的所有字母。
所以正文如下:
1a fost odata
2un balaur
care fura
mere de aur
使用此命令后:
sed 's/\([a-z]*\)\(.*\)\( [a-z]*\)/ ... /' filename
结果是这样的:
... 1a fost
... 2un balaur
care ...
mere ... de
我知道 </code> 是第一个 <code>[a-z]*
子表达式等等,但我就是想不通。还有,第一个子表达式和最后一个子表达式有什么区别一?为什么[a-z]
前面有一个space?
第一个 [a-z]*
匹配行中的第一个字母序列。 *
量词匹配 0 次或多次重复,因此也可以匹配空字符串。
第一行匹配1a
之前的空字符串。在第二行,它匹配 2un
之前的空字符串。在第三行它匹配 care
,在第四行它匹配 mere
。这些比赛将进入捕获组 1。
.*
匹配零个或多个任意字符,因此这将跳过行中间的所有内容。这些匹配进入捕获组 2。
[a-z]*
匹配 space 后跟零个或多个字母。需要 space 才能使 .*
在到达行中的最后一个 space 时停止匹配。这些匹配进入捕获组 3。
替换为捕获组 1 和 2,它们之间有 ...
。这是行首的字母,...
,然后是除最后一个单词之外的所有字母。