如何使用unix中的expr从存储在变量中的文件的绝对路径名中提取父目录?

时间:2013-10-04 08:27:21

标签: shell unix scripting

例如,我有一条路径

x=/home/john/filename.txt

如何使用/home/john功能仅提取expr

2 个答案:

答案 0 :(得分:3)

您可以使用dirname

$ x=/home/john/filename.txt
$ dirname $x
/home/john
编辑:您似乎在寻找替代方案:

$ x=/home/john/filename.txt
$ echo ${x%/*}
/home/john
$ echo ${x:0:10}
/home/john

编辑:OP似乎正在寻找使用expr的解决方案。假定给定的目录名长度,接受的解决方案工作。以下内容没有做出这样的假设:

$ x=/home/john/filename.txt
$ expr $x : '\(.*\)/.*'
/home/john

答案 1 :(得分:0)

这是使用expr函数

的替代方法
$ x=/home/john/filename.txt
$ expr $x : '\(.\{10\}\)'
/home/john

编辑:如果您的路径将以/home/name开头,然后路径长度将使用此模式:

$ expr $x : '\([/][a-z]*[/][a-z]*\)'
/home/john