0

例如,我有一条路径

x=/home/john/filename.txt

如何仅/home/john使用该expr功能进行提取?

4

2 回答 2

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
于 2013-10-04T08:35:52.870 回答
0

这是使用expr函数的替代方法

$ x=/home/john/filename.txt
$ expr $x : '\(.\{10\}\)'
/home/john

编辑:如果您的路径将从开始,/home/name然后将是不同长度的路径,请使用此模式:

$ expr $x : '\([/][a-z]*[/][a-z]*\)'
/home/john
于 2013-10-04T09:24:50.823 回答