Shell 如何在unix中使用expr从存储在变量中的文件的绝对路径名提取父目录?
例如,我有一条路径Shell 如何在unix中使用expr从存储在变量中的文件的绝对路径名提取父目录?,shell,unix,scripting,Shell,Unix,Scripting,例如,我有一条路径 x=/home/john/filename.txt 如何使用expr函数仅提取/home/john 编辑:您似乎正在寻找替代方案: $ x=/home/john/filename.txt $ echo ${x%/*} /home/john $ echo ${x:0:10} /home/john 编辑:OP似乎正在使用expr寻找解决方案。接受的解决方案在假定给定目录名长度的情况下工作。以下情况不符合该假设: $ x=/home/john/filename.txt $ ex
x=/home/john/filename.txt
如何使用expr
函数仅提取/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
您可以使用:
编辑:您似乎正在寻找替代方案:
$ 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
这是使用
expr
功能的替代方法
$ x=/home/john/filename.txt
$ expr $x : '\(.\{10\}\)'
/home/john
编辑:如果您的路径以/home/name
开头,然后是不同长度的路径,请使用此模式:
$ expr $x : '\([/][a-z]*[/][a-z]*\)'
/home/john
expr
计算表达式。它不执行子字符串操作。man expr包含一个用于子字符串操作的条目。但我不知道如何使用它。请给我发送一个片段,演示相同的expr
表达式。它不执行子字符串操作。man expr包含一个用于子字符串操作的条目。但我不知道如何使用它。请给我发送一个代码片段,以演示该操作所需的相同目录。。。删除我的(facepalm)。哦,这是OP想要的目录。。。删除我的(facepalm)。请您解释一下这个片段的登录名好吗?:
表示expr
将找到由正则表达式定义的模式,这个表达式从begging开始并包含10个字符,或者您可以为mote info定义不同的模式。请您解释一下这个片段的登录名好吗?:
表示expr
将找到由正则表达式定义的模式,该表达式从begging开始,包含10个字符,或者您可以为mote info定义不同的模式