如何获取路径的前 N ​​部分?

How to get first N parts of a path?

想象一条这样的路径: /a/b/c/d/e/...

其中 ... 可以是更深的任意数量的级别,也就是说,我不知道,提前,是否会有 2、3 或 13 级更深。

我如何使用 FreeBSD shell,例如 /bin/sh,提取此路径的前 "N" 部分?例如,前 4 个级别,这样我会得到 /a/b/c/d?

您可以使用 cut:

s='/a/b/c/d/e/f/g/h/i/j/k'
echo "$s" | cut -d/ -f1-5
/a/b/c/d

或者,如果您使用的是 BASH,那么您可以使用 shell 数组:

IFS=/ arr=($s)

然后从数组中打印所需的元素:

IFS=/ echo "${arr[*]:0:5}"
/a/b/c/d