Sed:替换最后一个点

Orl*_*rlo 0 regex sed

如何替换最后一个匹配项dot

例如,我想将test.jpg更改为test.th.jpg

我尝试过的

echo "test.jpg" | sed 's@[^\.]*$@\.th.@g'
Run Code Online (Sandbox Code Playgroud)

Ju *_*Liu 5

这应该工作:

$ echo "test.jpg" | sed 's/\.\([^.]*\)$/.th.\1/'
Run Code Online (Sandbox Code Playgroud)

它给:

test.th.jpg
Run Code Online (Sandbox Code Playgroud)

说明:

\.    literal dot
\(    start capturing group
[^.]  any character except dot
*     zero or more
\)    close capturing group
$     end of line
Run Code Online (Sandbox Code Playgroud)

在替换中\1替换第一个捕获组的内容:)