了解csh脚本中的sed行

时间:2016-09-29 07:30:15

标签: sed csh

我“继承了”一个旧的csh脚本,运行良好,但现在我被要求改进一些东西。现在我试着理解几年前的程序......

在某些地方,sed用于提取文件名或目录名,我无法理解其中发生的事情。也许有些人能够和善意向我解释。

代码行是:

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

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

1 个答案:

答案 0 :(得分:1)

假设为sed 's/.*\///'分配了文件路径:

  • .*\/:从路径中移除任何字符,直到最后一个斜杠.bdf。路径的剩余部分(即文件)与s/\(.*\)\/.*/\1/扩展名
  • 一起回显
  • /:输出文件目录的路径。截至\(.*\)的所有字符都会被捕获\1并使用反向引用17:21:07 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6ffb000 <0.000326> 17:21:07 mmap2(NULL, 8859, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6ff8000 <0.000337> 17:21:07 mmap2(NULL, 430216, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6f6c000 <0.000479> 17:21:07 mmap2(0xb6fd4000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x68000) = 0xb6fd4000 <0.000571> 17:21:07 mmap2(NULL, 1258856, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6e38000 <0.000517> 17:21:07 mmap2(0xb6f66000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x126000) = 0xb6f66000 <0.001654> 17:21:07 mmap2(0xb6f69000, 9576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6f69000 <0.002229> 17:21:07 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6ff7000 <0.000071> 17:21:07 munmap(0xb6ff8000, 8859) = 0 <0.000568> 17:21:07 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6ffa000 <0.000082> 输出