了解 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/\(.*\)\/.*//
:输出文件目录的路径。 /
之前的所有字符都被捕获 \(.*\)
并使用反向引用
输出
我 "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/\(.*\)\/.*//
:输出文件目录的路径。/
之前的所有字符都被捕获\(.*\)
并使用反向引用 输出