【发布时间】:2011-03-11 15:11:51
【问题描述】:
如何使用sed(不是dirname)删除最后一个目录,如下所示:
echo "/dir1/dir2/dir3/dir4" | sed .....
所以我会得到/dir1/dir2/dir3。
【问题讨论】:
如何使用sed(不是dirname)删除最后一个目录,如下所示:
echo "/dir1/dir2/dir3/dir4" | sed .....
所以我会得到/dir1/dir2/dir3。
【问题讨论】:
您不必使用外部工具
$ a="/dir1/dir2/dir3/dir4"
$ echo ${a%/*}
【讨论】:
sed 's,/*[^/]\+/*$,,'
如果是shell脚本的一部分,那么dirname肯定会更清楚。
【讨论】:
echo a.b/c.d/e.f | sed 's,/*[^/]\+/*$,,' 返回 a.b/c.d 或者它不在您的 sed 版本中?我的正则表达式与. 一点关系都没有。
你可以使用 "dirname" shell 命令:
dirname /dir2/dir3/dir4
【讨论】:
echo "/etc1/etc2/etc3/etc" | sed -e "s/\/[^\/]*$//"
生产
/etc1/etc2/etc3
基本上在最后一个斜线之后去掉不包含另一个斜线的任何内容。
【讨论】: