如何管道文件路径进行解析



我有一个我需要解析的文件路径,但是,我对Shell是新的,并且不确定适当或常规的过程是什么。假设我有一个代表文件路径的变量:

EX=/home/directory/this/might/have/numbers23/12349_2348/more/paths

我需要获得12349_2348,然后将成为我已经知道如何做的其他一些事情的文件名。我该如何提取?我知道使用Regex做到这一点的基本方法,但是,它可以与/([0-9]) d /匹配,但是,我通过使用Regexr玩耍,并且不知道该如何处理。我尝试使用SED如下:

echo $EX | sed /([0-9])d+/ 

,但这无能为力,只会给我一个错误。什么是更好的方法,如果SED是最好的方法,我在做什么错?我看过教程,看来我应该能够以这种方式匹配正则表达式。

这取决于您如何知道自己想要的东西。例如

dwalker$ EX=/home/directory/this/might/have/numbers23/12349_2348/more/paths
dwalker$ echo $EX | egrep -o 'd+_d+'
12349_2348

5位数,然后是下划线,然后是4位数字:

dwalker$ EX=/home/directory/this/might/have/numbers23/12349_2348/more/paths
dwalker$ echo $EX | egrep -o 'd{5}_d{4}'
12349_2348

如果您知道您需要从结尾处取下2个子目录,然后剩下的就是您的目录,可以做到这一点:

$ EX1=`dirname $EX`
$ EX1=`dirname $EX`
$ basename $EX1
12349_2348

所以有几种方法可以做到。

egrep是"扩展"的grep。它使您可以将 d用于数字和其他东西。您可以查看Man页面以获取更多详细信息,并为-O。

的解释。

相关内容

  • 没有找到相关文章