使用Sed过滤器为变量分配路径

时间:2018-03-12 20:10:10

标签: linux sed command

我们的存储库数据目录路径看起来像 /srv/git/repositories/group/subgroup/project.git ,我想在存储库之后获取路径名称将其分配给变量。我试过下面的命令没有给我任何输出。 存储库之前和之后的路径名更改,因此我没有在sed过滤器中给出绝对路径

pwd = srv / git / repositories / group / subgroup / project.git [看起来像]

RW_DIR=$(echo $pwd | sed 's/.*/repositories/\(*\).*/\1/') 

期待输出

RW_DIR = group / subgroup / project [只是项目名称而不是project.git]

任何人都可以帮忙获得输出。

我感谢大家的帮助

谢谢大家

1 个答案:

答案 0 :(得分:0)

$ echo '/srv/git/repositories/group/subgroup/project.git' |
    sed -E 's|.*repositories/(.*)\.git$|\1|'

$ echo '/srv/git/repositories/group/subgroup/project.git' |
    sed -E 's|.*repositories/||; s|\.git$||' 

$ echo '/srv/git/repositories/group/subgroup/project.git' |
    grep -oP 'repositories/\K.*(?=\.git)'

或者如果子目录的数量是固定的:

$ echo '/srv/git/repositories/group/subgroup/project.git' |
    awk -F'[./]' 'BEGIN{OFS="/"}{print $5,$6,$7}' 

输出:

group/subgroup/project