Regex / grep查找X深度的文件系统路径

时间:2011-04-10 15:08:55

标签: regex string bash sed grep

我需要一个匹配

的正则表达式/ grep / sed /表达式
"F:\vol2\home\USERNAME" /grant ... 

并且不匹配任何类似

的内容
"F:\vol2\home\USERNAME\subfolder" /grant ...
"F:\vol2\subfolder\subfoler2" /grant ...
"F:\vol2\home" /grant

显然,'USERNAME'是一个变量,需要这样对待。我在想'home \\ [A-Za-z] * [^ \\]',但这显然不起作用。

4 个答案:

答案 0 :(得分:1)

awk '/home\\[^\\]+\"/{print $1}'

似乎有效。

在perl中,这也有效:

while (<>) {
  print if (/\"F:\\vol2\\home\\[^\\]+\"/);
}

答案 1 :(得分:1)

awk -F '\\' -v user=USERNAME 'NF==4 && $3=="home" && $4 ~ "^"user'

拆分反斜杠,必须有4个字段,第三个是“home”,第四个字段以 user 变量开头

答案 2 :(得分:0)

grep'\ vol2 \ home \'$ {USERNAME}'''x2

答案 3 :(得分:0)

如果您的路径始终是第一个字段,

awk '$1~/home\\[^\\]+\"/{print $1}'

或者您可以在\上拆分第一个字段,并检查令牌数为4

$ ruby -ane 'puts $F[0] if $F[0].split("\\").size==4 && /home/' file
"F:\vol2\home\USERNAME"