命令是什么意思?sed's,^.*/,,'

use*_*454 2 sed

对我来说,使用sed真的很常见.我曾经有过's/pattern1/pattern2/g'.

有人可以帮我解释一下吗?
输入字符串如下所示:

path1/path2/path3/fileA path1/path2/path3/fileB path1/path2/path3/fileC
Run Code Online (Sandbox Code Playgroud)

输出是fileA fileB fileC.

kfs*_*one 12

它是一个替换命令,使用','而不是'/'作为分隔符 - 可能是因为模式中有'/'.它相当于

s/^.*\///
Run Code Online (Sandbox Code Playgroud)

它表示删除从行首到最后正斜杠的所有内容.

当您使用's'时,下一个字符将用作分隔符.所以你也可以把它写成

s!^.*/!!
s@^.*/@@
Run Code Online (Sandbox Code Playgroud)

等等

使用不同的分隔符可以节省您必须在模式中转义分隔符的实例.

您的示例输入:

路径1 /路径/ path3时/的fileA

' ^'表示'从字符串的开头',' .*'表示'匹配任何'''贪婪',所以它试图匹配尽可能多的字符串.' .*/'试图贪婪地匹配任何东西,只要它跟着'/'.因为它很贪婪,包括其他斜线.所以它匹配path1/path2/path3/.替换模式是'',即什么都没有,所以它有效地删除了从字符串的开头到最后的'/'的所有内容,只留下了fileA

TL; DR:表示"删除路径信息并只留下文件名"