什么是“” echo $PWD | sed 's?.*users/[^/]\+/??' ””

什么是“” echo $PWD | sed 's?.*users/[^/]\+/??' ””

什么是

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

相关内容