【问题标题】:How to get first N parts of a path?如何获得路径的前 N ​​部分?
【发布时间】:2017-05-04 22:32:33
【问题描述】:

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

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

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

【问题讨论】:

    标签: shell path sh freebsd


    【解决方案1】:

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

    【讨论】:

    • 适用于 macOS。我实际上在 FreeBSD (/bin/sh) 上需要它。让我修改问题以添加它。
    • echo "$s" | cut -d/ -f1-5 也应该在 FreeBSD 上工作
    • 太棒了,就像一个魅力。不知道为什么我想不到翻转管道!如果您可以将其添加到您的答案中,那将是很好的参考。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 2013-07-20
    • 1970-01-01
    • 2013-01-06
    相关资源
    最近更新 更多