例如,我有一条路径
x=/home/john/filename.txt
如何仅/home/john
使用该expr
功能进行提取?
您可以使用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
这是使用expr
函数的替代方法
$ x=/home/john/filename.txt
$ expr $x : '\(.\{10\}\)'
/home/john
编辑:如果您的路径将从开始,/home/name
然后将是不同长度的路径,请使用此模式:
$ expr $x : '\([/][a-z]*[/][a-z]*\)'
/home/john