了解 csh 脚本中的 sed 行

understanding sed lines in csh script

我 "inherited" 一个旧的 csh 脚本,运行良好,但现在我被要求改进一些东西。现在我试着了解几年前编程的内容...

在某些地方,sed 用于提取文件名或目录名,我无法详细了解那里发生了什么。也许有人能够并且好心地向我解释一下。

代码行是:

set File = `echo $Dirnames[$i] |sed 's/.*\///'`".bdf"
set Dir = `echo $Dirnames[$i] | sed 's/\(.*\)\/.*//'`

我理解除了 sed 部分之外的所有代码...

假设给Dirname[$i]分配了一个文件路径:

  • sed 's/.*\///':从路径中删除直到最后一个斜杠 .*\/ 的所有字符。路径的其余部分(即文件)以 .bdf 扩展名
  • 回显
  • s/\(.*\)\/.*//:输出文件目录的路径。 / 之前的所有字符都被捕获 \(.*\) 并使用反向引用
  • 输出