什么是
echo $PWD | sed 's?.*users/[^/]\+/??'
这里 PWD 是路径:
/proj/SAM1/users/ssudi/SAm/VELOCE/ML3P8/trunk
命令到底sed
在做什么以及s?.*users/[^/]\+/??
它如何工作?
答案1
s?.*users/[^/]\+/??
细分如下:
s
是命令代换?
(所有三个)都是表达分隔符(所以上面也可能看起来像这样:)s@.*users/[^/]\+/@@
。一般形式是这样的:s/<match pattern>/<replacement>/<modifiers>
.在这种情况下,此替换中没有修饰符,也没有替换,因此第一个模式找到的任何内容都将从流中删除。.*users/[^/]\+/
是搜索模式,意味着:.*
无论前面是什么users/
[^/]\+/
后面跟着一个不是的东西\
(至少一个这样的东西,可能更多),这些后面跟着一个/
.
因此,它的目标是路径中的一个字符串,该字符串以一个子文件夹开头
users
,后跟一个子文件夹,例如。/subfolder/
。
因此剩下的是这样的:
SAm/VELOCE/ML3P8/trunk
这是被删除的部分:
/proj/SAM1/users/ssudi/
/proj/SAM1/
先于users/
,然后继之ssudi
。