如何获取路径的前 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
想象一条这样的路径:
/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