如何获得路径的前N个部分?

时间:2016-12-19 19:47:58

标签: shell path sh freebsd

想象一下这样的道路: /a/b/c/d/e/...

...可以是更深层次的任何级别,即我不知道,提前是否会有2,3或13级深度。

如何使用FreeBSD shell(例如/bin/sh)提取此路径的第一个“N”部分?例如,前4个级别,以便我得到/a/b/c/d

1 个答案:

答案 0 :(得分:2)

您可以使用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